View Issue Details

IDProjectCategoryView StatusLast Update
0002407XdebugUncategorizedpublic2026-02-27 05:06
ReporterSoul--Reaver Assigned To 
PrioritynormalSeveritymajorReproducibilityalways
Status newResolutionopen 
Platformx64OSWindows 11OS Version25H2
Product Version3.5.1 
Summary0002407: Performance issues with 3.5.1 vs 3.4
Description

I updated my PHP and Xdebug today.
Some performance testing scripts i have suddenly saw issues.
Saw the other tickets concerning performance issues and can say 3.5.1 is better compared to 3.5.0 but not to earlier versions.

CPU: AMD 5700G
All of this was done on PHP 8.3.30 since Xdebug 3.4.7 was not available for PHP 8.5.x.

Steps To Reproduce

I've attached a simple script that loops through if statements using == and === and measures performance between them. Nothing special but it allows a stable performance comparison.

Xdebug 3.4.7:
== with matching strings took 1.211257 seconds
== with non-matching strings took 1.252350 seconds
=== with matching strings took 1.295035 seconds
=== with non-matching strings took 1.309487 seconds

Xdebug 3.5.0:
== with matching strings took 24.441501 seconds
== with non-matching strings took 24.591401 seconds
=== with matching strings took 24.634848 seconds
=== with non-matching strings took 24.689718 seconds

Xdebug 3.5.1:
== with matching strings took 7.929764 seconds
== with non-matching strings took 8.108500 seconds
=== with matching strings took 8.093506 seconds
=== with non-matching strings took 8.169023 seconds

TagsNo tags attached.
Attached Files
test_==_===.php (973 bytes)   
<pre>
<?php
$time_start = microtime(true);

for ( $i = 0; $i < 10000000; ++$i )
{
   $results = ('string' . $i) == ('string' . $i);
}

$time_end = microtime(true);
printf("== with matching strings took %f seconds\n", $time_end - $time_start);

$time_start = microtime(true);

for ( $i = 0; $i < 10000000; ++$i )
{
   $results = ('string' . $i) == ('string' . ($i + 1));
}

$time_end = microtime(true);
printf("== with non-matching strings took %f seconds\n", $time_end - $time_start);

$time_start = microtime(true);

for ( $i = 0; $i < 10000000; ++$i )
{
   $results = ('string' . $i) === ('string' . $i);
}

$time_end = microtime(true);
printf("=== with matching strings took %f seconds\n", $time_end - $time_start);

$time_start = microtime(true);

for ( $i = 0; $i < 10000000; ++$i )
{
   $results = ('string' . $i) === ('string' . ($i + 1));
}

$time_end = microtime(true);
printf("=== with non-matching strings took %f seconds\n", $time_end - $time_start);
?>
</pre>
test_==_===.php (973 bytes)   
Operating SystemWindows 11 25H2
PHP Version8.3.20-8.3.29

Activities

Issue History

Date Modified Username Field Change
2026-02-27 05:06 Soul--Reaver New Issue
2026-02-27 05:06 Soul--Reaver File Added: test_==_===.php