3v4l.org

run code in 500+ PHP versions simultaneously
<?php class A { public B|C $x; public function __construct(B|C $x) { $this->x = $x; } public function __sleep() { return ['x']; } } class B { public A $a; public function __serialize() { return ['a' => new A($this)]; } } class C { public A $a; private self $instance; public function __serialize() { return ['a' => new A($this)]; } public function __clone() { $this->instance = $this; } } // instantiate $b = new B(); $c = new C(); // clone and assign $ib = clone $b; $ic = clone $c; // serialize $sb = serialize($b); $scb = serialize(clone $b); $sib = serialize($ib); $sc = serialize($c); $scc = serialize(clone $c); $sic = serialize($ic); // unserialize $ub = unserialize($sb); $ucb = unserialize($scb); $uib = unserialize($sib); $uc = unserialize($sc); $ucc = unserialize($scc); $uic = unserialize($sic); // expected behavior is b == b->a->x printf("original ids: b:%s, b->a:%s, b->a->x:%s \n", spl_object_id($ub), spl_object_id($ub->a), spl_object_id($ub->a->x)); printf("cloned ids: b:%s, b->a:%s, b->a->x:%s \n", spl_object_id($ucb), spl_object_id($ucb->a), spl_object_id($ucb->a->x)); printf("cloned & assigned ids: b:%s, b->a:%s, b->a->x:%s \n", spl_object_id($uib), spl_object_id($uib->a), spl_object_id($uib->a->x)); printf(PHP_EOL); // expected behavior is c == c->a->x printf("original ids: c:%s, c->a:%s, c->a->x:%s \n", spl_object_id($uc), spl_object_id($uc->a), spl_object_id($uc->a->x)); printf("cloned ids: c:%s, c->a:%s, c->a->x:%s \n", spl_object_id($ucc), spl_object_id($ucc->a), spl_object_id($ucc->a->x)); printf("cloned & assigned ids: c:%s, c->a:%s, c->a->x:%s \n", spl_object_id($uic), spl_object_id($uic->a), spl_object_id($uic->a->x)); printf(PHP_EOL); printf("serialized original: %s\n", $sb); printf("serialized clone : %s\n", $scb);

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.5.80.0090.00816.86
8.5.70.0090.00818.39
8.5.60.0130.00516.95
8.5.50.0110.00716.48
8.5.30.0100.00819.44
8.5.20.0130.00618.52
8.5.10.0120.00716.70
8.5.00.0160.01320.21
8.4.230.0060.00419.61
8.4.220.0080.01319.74
8.4.210.0070.00319.59
8.4.180.0150.00919.78
8.4.170.0120.00920.54
8.4.160.0150.00723.94
8.4.150.0060.00716.79
8.4.140.0110.01017.59
8.4.130.0050.00419.15
8.4.120.0060.00420.46
8.4.110.0130.00820.58
8.4.100.0100.01018.88
8.4.90.0100.00720.59
8.4.80.0090.01118.88
8.4.70.0120.00618.73
8.4.60.0120.01019.03
8.4.50.0120.00820.41
8.4.40.0090.00617.59
8.4.30.0080.01118.75
8.4.20.0120.00619.83
8.4.10.0030.00619.25
8.3.320.0090.00218.69
8.3.310.0080.01118.47
8.3.300.0120.00820.94
8.3.290.0150.00520.99
8.3.280.0140.00618.29
8.3.270.0150.00616.61
8.3.260.0080.00916.57
8.3.250.0130.00617.41
8.3.240.0120.00816.75
8.3.230.0120.00716.86
8.3.220.0100.00818.95
8.3.210.0050.00816.24
8.3.200.0050.00416.53
8.3.190.0090.01117.02
8.3.180.0100.01016.64
8.3.170.0040.00417.08
8.3.160.0090.00918.45
8.3.150.0110.00720.49
8.3.140.0050.00316.61
8.3.130.0000.00818.34
8.3.120.0120.00018.70
8.3.110.0090.00320.94
8.3.100.0030.00616.62
8.3.90.0030.00526.77
8.3.80.0060.00317.97
8.3.70.0000.01518.40
8.3.60.0060.01016.75
8.3.50.0130.00716.47
8.3.40.0070.01323.73
8.3.30.0120.00319.01
8.3.20.0080.00024.18
8.3.10.0070.00024.66
8.3.00.0050.00226.16
8.2.310.0100.01018.12
8.2.300.0100.01024.12
8.2.290.0080.01020.20
8.2.280.0060.00718.62
8.2.270.0070.01117.54
8.2.260.0130.00617.24
8.2.250.0040.00417.50
8.2.240.0030.00618.73
8.2.230.0060.00322.58
8.2.220.0030.00724.06
8.2.210.0030.00726.77
8.2.200.0060.00316.75
8.2.190.0090.00618.16
8.2.180.0200.00018.54
8.2.170.0140.00718.81
8.2.160.0070.00722.96
8.2.150.0040.00425.66
8.2.140.0030.00624.66
8.2.130.0050.00326.16
8.2.120.0050.00320.96
8.2.110.0070.00320.73
8.2.100.0140.00618.52
8.2.90.0120.00518.56
8.2.80.0160.00218.50
8.2.70.0120.00718.48
8.2.60.0110.00818.72
8.2.50.0130.00618.52
8.2.40.0130.00418.54
8.2.30.0130.00518.52
8.2.20.0110.00618.52
8.2.10.0150.00318.46
8.2.00.0110.00518.54
8.1.340.0120.00823.49
8.1.330.0120.00722.01
8.1.320.0110.00818.01
8.1.310.0060.00816.48
8.1.300.0130.00715.97
8.1.290.0030.00630.84
8.1.280.0060.00925.92
8.1.270.0080.00024.66
8.1.260.0030.00626.35
8.1.250.0000.00828.09
8.1.240.0050.00620.31
8.1.230.0120.00518.62
8.1.220.0110.00518.50
8.1.210.0110.00618.91
8.1.200.0130.00418.47
8.1.190.0110.00718.42
8.1.180.0150.00318.43
8.1.170.0120.00618.56
8.1.160.0110.00518.52
8.1.150.0140.00418.47
8.1.140.0120.00418.43
8.1.130.0110.00718.44
8.1.120.0130.00518.61
8.1.110.0080.00918.48
8.1.100.0100.00618.44
8.1.90.0150.00318.47
8.1.80.0120.00518.64
8.1.70.0100.00718.42
8.1.60.0100.00918.50
8.1.50.0090.00718.66
8.1.40.0120.00518.51
8.1.30.0090.00718.76
8.1.20.0150.00318.50
8.1.10.0140.00218.47
8.1.00.0110.00518.52
8.0.300.0130.00318.34
8.0.290.0130.00518.77
8.0.280.0130.00418.29
8.0.270.0110.00618.32
8.0.260.0170.00318.29
8.0.250.0120.00818.31
8.0.240.0160.00618.34
8.0.230.0170.00318.31
8.0.220.0110.00718.32
8.0.210.0140.00518.31
8.0.200.0160.00318.32
8.0.190.0150.00418.31
8.0.180.0160.00618.35
8.0.170.0200.00318.30
8.0.160.0180.00318.79
8.0.150.0150.00318.29
8.0.140.0150.00518.30
8.0.130.0150.00318.28
8.0.120.0170.00318.28
8.0.110.0180.00318.33
8.0.100.0150.00618.27
8.0.90.0130.00818.29
8.0.80.0190.00118.29
8.0.70.0170.00518.30
8.0.60.0140.00818.30
8.0.50.0190.00218.28
8.0.30.0200.00218.30
8.0.20.0190.00218.37
8.0.10.0140.00618.31

preferences:
80.44 ms | 1212 KiB | 5 Q