3v4l.org

run code in 300+ PHP versions simultaneously
<?php interface IHookedDemo { public mixed $prop1 { get; } public mixed $prop2 { set; } public mixed $prop3 { get; set; } } abstract class HookedDemo { abstract public mixed $prop1 { get; } abstract public mixed $prop2 { set; } abstract public mixed $prop3 { get; set; } } class WithHooks { public mixed $prop1 { get => "always this string"; } public mixed $prop2 { set => strtolower($value); } public mixed $prop3 { get => $this->prop3; set => strtolower($value); } } class WithFinalHooks { public mixed $prop1 { final get => "always this string"; } public mixed $prop2 { final set => strtolower($value); } public mixed $prop3 { final get => $this->prop3; final set => strtolower($value); } } $classes = [ IHookedDemo::class, HookedDemo::class, WithHooks::class, WithFinalHooks::class, ]; foreach ( $classes as $clazz ) { echo "$clazz:\n"; $ref = new ReflectionClass( $clazz ); echo $ref; foreach ( [ 'prop1', 'prop2', 'prop3' ] as $prop ) { $propRef = new ReflectionProperty( $clazz, $prop ); echo $propRef; } echo "\n"; }

Here you find the average performance (time & memory) of each version. A grayed out version indicates it didn't complete successfully (based on exit-code).

VersionSystem time (s)User time (s)Memory (MiB)
8.4.40.0500.00917.46
8.4.30.0450.01017.46
8.4.20.0220.00317.56
8.4.10.0340.00017.35
8.3.170.0090.00516.72
8.3.160.0180.00416.44
8.3.150.0200.00316.66
8.3.140.0180.00416.59
8.3.130.0230.00716.64
8.3.120.0190.01216.53
8.3.110.0120.00916.55
8.3.100.0200.00316.54
8.3.90.0190.00516.45
8.3.80.0230.00016.48
8.3.70.0170.00716.76
8.3.60.0170.00716.51
8.3.50.0150.00816.41
8.3.40.0140.00317.53
8.3.30.0090.01017.43
8.3.20.0160.00317.39
8.3.10.0110.00717.55
8.3.00.0030.00717.18
8.2.270.0180.00016.48
8.2.260.0170.00016.37
8.2.250.0140.00516.68
8.2.240.0170.00316.16
8.2.230.0170.00416.15
8.2.220.0140.00316.36
8.2.210.0190.00016.05
8.2.200.0130.00416.63
8.2.190.0090.00916.85
8.2.180.0150.00316.21
8.2.170.0160.00317.40
8.2.160.0100.01017.31
8.2.150.0160.00417.32
8.2.140.0170.00317.19
8.2.130.0150.00617.32
8.2.120.0170.00717.39
8.2.110.0240.00417.07
8.2.100.0240.00017.44
8.2.90.0130.00617.21
8.2.80.0190.00417.30
8.2.70.0120.00717.15
8.2.60.0150.00317.10
8.2.50.0110.00817.16
8.2.40.0150.00317.37
8.2.30.0090.00917.04
8.2.20.0180.00017.28
8.2.10.0140.00417.07
8.2.00.0190.00417.08

preferences:
144.32 ms | 995 KiB | 7 Q