🚀 OptimAIze Speed Test";
echo "";
$startTime = microtime(true);
try {
$db = Database::getInstance();
echo "
✅ Database connected
";
// Test 1: Check new configuration
echo "1. Configuration Check
";
if (defined('OPTIMAIZE_REQUESTS_PER_MINUTE')) {
echo "✅ New OptimAIze rate limits configured: " . OPTIMAIZE_REQUESTS_PER_MINUTE . " requests/minute
";
} else {
echo "⚠️ Using standard rate limits: " . GPT_REQUESTS_PER_MINUTE . " requests/minute
";
}
if (defined('ENABLE_COMBINATION_CACHE')) {
echo "✅ Combination caching enabled
";
} else {
echo "⚠️ Combination caching not configured
";
}
// Test 2: Rate limit status
echo "2. Rate Limit Status
";
GptHelper::resetRateLimit();
$rateLimitStatus = GptHelper::getRateLimitStatus(true); // OptimAIze mode
echo "📊 OptimAIze Rate Limit Status:
";
echo "" . json_encode($rateLimitStatus, JSON_PRETTY_PRINT) . "
";
// Test 3: Cache functionality
echo "3. Cache System Test
";
$cacheStats = GptHelper::getCacheStats();
echo "📊 Cache Statistics:
";
echo "" . json_encode($cacheStats, JSON_PRETTY_PRINT) . "
";
// Test 4: Sample analysis with timing
echo "4. Sample Analysis Speed Test
";
$testCombinations = [
['Age', '5-10 years', 'Education', 'PhD'], // Should be impossible
['Age', '25-35 years', 'Location', 'Urban'], // Should be possible
['Age', '0-2 years', 'Employment', 'CEO'] // Should be impossible
];
$totalAnalysisTime = 0;
$analysisCount = 0;
foreach ($testCombinations as $combo) {
$analysisStart = microtime(true);
try {
$result = GptHelper::analyzeCombination($combo[0], $combo[1], $combo[2], $combo[3]);
$analysisEnd = microtime(true);
$analysisTime = $analysisEnd - $analysisStart;
$totalAnalysisTime += $analysisTime;
$analysisCount++;
$resultText = $result['is_impossible'] ? 'IMPOSSIBLE' : 'POSSIBLE';
$cacheText = $result['cached'] ? ' (from cache)' : ' (new analysis)';
echo "✅ {$combo[0]}={$combo[1]} + {$combo[2]}={$combo[3]} => $resultText$cacheText
";
echo "⏱️ Analysis time: " . round($analysisTime, 2) . " seconds
";
echo "💡 Reasoning: " . substr($result['reasoning'], 0, 100) . "...
";
} catch (Exception $e) {
echo "❌ Analysis failed: " . $e->getMessage() . "
";
}
echo "
";
}
// Test 5: Performance summary
echo "5. Performance Summary
";
if ($analysisCount > 0) {
$avgAnalysisTime = $totalAnalysisTime / $analysisCount;
$estimatedHourlyRate = $avgAnalysisTime > 0 ? (3600 / $avgAnalysisTime) : 0; // combinations per hour
echo "📈 Average analysis time: " . round($avgAnalysisTime, 2) . " seconds
";
echo "📈 Estimated rate: " . round($estimatedHourlyRate) . " combinations/hour
";
// Compare with old rate
$oldRate = 3 * 60; // 3 per minute * 60 minutes = 180 per hour max
if ($estimatedHourlyRate > 0) {
$improvement = ($estimatedHourlyRate / $oldRate) * 100;
echo "🚀 Speed improvement: " . round($improvement) . "% faster than old system
";
}
} else {
echo "❌ No successful analyses completed - cannot calculate performance metrics
";
echo "⚠️ This indicates a serious rate limiting issue that needs immediate attention
";
$estimatedHourlyRate = 0; // Set to zero to prevent division by zero later
}
// Test 6: Database readiness
echo "6. Database Readiness Check
";
$tables = ['panel_directives', 'optimization_analysis_state'];
foreach ($tables as $table) {
$result = $db->query("SHOW TABLES LIKE '$table'");
if ($result && $result->num_rows > 0) {
echo "✅ Table '$table' exists
";
} else {
echo "❌ Table '$table' missing
";
}
}
// Check for pending analysis
$pendingResult = $db->query("SELECT COUNT(*) as count FROM panel_directives WHERE llm_checked = 0");
$pendingCount = $pendingResult->fetch_assoc()['count'];
echo "📊 Pending combinations to analyze: $pendingCount
";
if ($pendingCount > 0 && isset($estimatedHourlyRate) && $estimatedHourlyRate > 0) {
$estimatedTime = $pendingCount / ($estimatedHourlyRate / 3600); // in seconds
echo "⏱️ Estimated completion time: " . gmdate('H:i:s', $estimatedTime) . "
";
} elseif ($pendingCount > 0) {
echo "⚠️ Cannot estimate completion time due to API rate limit issues
";
echo "💡 Recommendation: Use conservative processing (1 request per 90 seconds)
";
echo "💡 Conservative estimate: ~" . round($pendingCount / 40, 1) . " hours (at 40 combinations/hour)
";
}
} catch (Exception $e) {
echo "❌ Test failed: " . $e->getMessage() . "
";
}
$endTime = microtime(true);
echo "Total test time: " . round($endTime - $startTime, 2) . " seconds
";
echo "🔧 Deployment Instructions
";
echo "
- Backup your current files:
- includes/config.php
- includes/GptHelper.php
- simple_foreground_processor.php (or your current processor)
- Deploy the enhanced files:
- Replace
includes/config.php with the updated version
- Replace
includes/GptHelper.php with the enhanced version
- Add
enhanced_optimization_processor.php as your new processor
- Update your OptimAIze page:
- Change the processor call to use
enhanced_optimization_processor.php
- The system will now use caching and faster rate limits automatically
- Monitor performance:
- Check the logs at
logs/enhanced_optimization.log
- Monitor the cache growth for efficiency
- The system should now process 200-400 combinations per hour vs the previous ~12/hour
";
echo "🎉 Expected Results:
• 10-30x faster processing speed
• Intelligent caching to avoid re-analyzing similar combinations
• Better error handling and recovery
• Real-time progress tracking
• Automatic rate limit management
";
?>