memLeak.php 872 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. <?php
  2. declare(strict_types=1);
  3. use JsonMachine\Items;
  4. require_once __DIR__.'/../../vendor/autoload.php';
  5. ini_set('memory_limit', 128 * 1024 * 1024);
  6. function dummy()
  7. {
  8. $i = 0;
  9. $string = file_get_contents(__DIR__.'/../../test/performance/twitter_example_0.json');
  10. $item = '['.str_repeat($string.',', 400).$string.']';
  11. var_dump(strlen($item));
  12. yield '[';
  13. $sep = '';
  14. while ($i++ < 100) {
  15. yield $sep;
  16. $sep = ',';
  17. yield $item;
  18. }
  19. yield ']';
  20. }
  21. $items = Items::fromIterable(dummy());
  22. $previousReport = '';
  23. foreach ($items as $i => $item) {
  24. $report = memory_get_peak_usage()
  25. .':'.memory_get_peak_usage(true)
  26. ;
  27. if ($report !== $previousReport) {
  28. $index = str_pad($i, 3, ' ', STR_PAD_LEFT);
  29. echo "$index: $report\n";
  30. $previousReport = $report;
  31. }
  32. unset($item);
  33. }