3v4l.org

run code in 300+ PHP versions simultaneously
<?php class IteratorWithFilter { public $generator; public function __construct(array $data) { $this->generator = new \ArrayIterator($data); } public function filter(Closure $closure) { $closure = clone $closure; $closure = $closure->bindTo($this); $this->generator = new \CallbackFilterIterator($this->generator, $closure); return $this; } } function createIterator(Closure $closure) { $iter = new IteratorWithFilter([['a'], ['b']]); return $iter->filter($closure); } function createClosure() { return function ($row) { return true; }; } $closure = createClosure(); for ($i = 0; $i < 50 * 1000; $i++) { createIterator($closure); if (($i % 1000) === 0) { // gc_collect_cycles(); // explicit GC does not help... echo round(memory_get_usage() / (1024 * 1024), 3) . " MiB\n"; } }
Output for 8.0.0 - 8.0.12
0.375 MiB 1.674 MiB 2.98 MiB 4.223 MiB 5.592 MiB 6.836 MiB 8.079 MiB 1.552 MiB 2.795 MiB 4.039 MiB 4.506 MiB 3.03 MiB 4.274 MiB 3.77 MiB 2.78 MiB 4.024 MiB 3.276 MiB 4.52 MiB 3.652 MiB 2.844 MiB 4.087 MiB 3.249 MiB 4.493 MiB 3.669 MiB 2.839 MiB 4.082 MiB 3.255 MiB 4.499 MiB 3.671 MiB 2.842 MiB 4.086 MiB 3.258 MiB 4.501 MiB 3.673 MiB 2.845 MiB 4.088 MiB 3.26 MiB 4.504 MiB 3.676 MiB 2.847 MiB 4.091 MiB 3.263 MiB 4.506 MiB 3.678 MiB 2.85 MiB 4.093 MiB 3.265 MiB 4.509 MiB 3.681 MiB 2.852 MiB
Output for 7.4.2 - 7.4.25
0.376 MiB 1.659 MiB 2.949 MiB 4.311 MiB 5.665 MiB 6.893 MiB 8.121 MiB 9.6 MiB 11.095 MiB 12.323 MiB 13.552 MiB 14.78 MiB 16.008 MiB 17.237 MiB 18.965 MiB 20.594 MiB 21.822 MiB 23.05 MiB 24.279 MiB 25.507 MiB 26.735 MiB 27.964 MiB 29.192 MiB 30.42 MiB 31.649 MiB 33.411 MiB 34.639 MiB 36.868 MiB 38.096 MiB 39.324 MiB 40.553 MiB 41.781 MiB 43.009 MiB 44.238 MiB 45.466 MiB 46.694 MiB 47.923 MiB 49.151 MiB 51.047 MiB 52.275 MiB 53.504 MiB 54.732 MiB 55.96 MiB 57.189 MiB 58.417 MiB 59.645 MiB 60.874 MiB 62.102 MiB 63.33 MiB 64.559 MiB
Output for 7.4.0 - 7.4.1
0.375 MiB 1.658 MiB 2.949 MiB 4.311 MiB 5.664 MiB 6.893 MiB 8.121 MiB 9.599 MiB 11.095 MiB 12.323 MiB 13.551 MiB 14.78 MiB 16.008 MiB 17.236 MiB 18.965 MiB 20.594 MiB 21.822 MiB 23.05 MiB 24.279 MiB 25.507 MiB 26.735 MiB 27.964 MiB 29.192 MiB 30.42 MiB 31.649 MiB 33.411 MiB 34.639 MiB 36.868 MiB 38.096 MiB 39.324 MiB 40.553 MiB 41.781 MiB 43.009 MiB 44.238 MiB 45.466 MiB 46.694 MiB 47.923 MiB 49.151 MiB 51.047 MiB 52.275 MiB 53.503 MiB 54.732 MiB 55.96 MiB 57.188 MiB 58.417 MiB 59.645 MiB 60.873 MiB 62.102 MiB 63.33 MiB 64.558 MiB
Output for 7.3.0 - 7.3.32
0.376 MiB 1.659 MiB 2.95 MiB 4.311 MiB 5.665 MiB 6.893 MiB 8.121 MiB 9.6 MiB 11.095 MiB 12.323 MiB 13.552 MiB 14.78 MiB 16.008 MiB 17.237 MiB 18.965 MiB 20.594 MiB 21.822 MiB 23.051 MiB 24.279 MiB 25.507 MiB 26.736 MiB 27.964 MiB 29.192 MiB 30.421 MiB 31.649 MiB 33.411 MiB 34.64 MiB 36.868 MiB 38.096 MiB 39.325 MiB 40.553 MiB 41.781 MiB 43.01 MiB 44.238 MiB 45.466 MiB 46.695 MiB 47.923 MiB 49.151 MiB 51.047 MiB 52.275 MiB 53.504 MiB 54.732 MiB 55.96 MiB 57.189 MiB 58.417 MiB 59.645 MiB 60.874 MiB 62.102 MiB 63.33 MiB 64.559 MiB
Output for 7.2.0 - 7.2.34
0.372 MiB 1.67 MiB 2.976 MiB 4.353 MiB 5.722 MiB 7.099 MiB 8.343 MiB 9.836 MiB 11.213 MiB 12.457 MiB 13.834 MiB 15.077 MiB 16.321 MiB 17.698 MiB 19.442 MiB 20.819 MiB 22.062 MiB 23.306 MiB 24.683 MiB 25.927 MiB 27.304 MiB 28.547 MiB 29.791 MiB 31.168 MiB 32.411 MiB 33.789 MiB 35.032 MiB 37.276 MiB 38.653 MiB 39.896 MiB 41.273 MiB 42.517 MiB 43.761 MiB 45.138 MiB 46.381 MiB 47.758 MiB 49.002 MiB 50.245 MiB 51.623 MiB 52.866 MiB 54.243 MiB 55.487 MiB 56.73 MiB 58.107 MiB 59.351 MiB 60.728 MiB 61.972 MiB 63.215 MiB 64.592 MiB 65.836 MiB

preferences:
89.74 ms | 402 KiB | 110 Q