fork(2) download
  1. <?php
  2.  
  3. function report_memory($string = '') {
  4. $mem = (memory_get_usage()/1000);
  5. echo "$string: {$mem}kb\n";
  6. return $mem;
  7. }
  8.  
  9. $start = report_memory('Start of stript');
  10. echo "\n";
  11.  
  12. for($i = 10000; $i > 0; $i--) {
  13. $var = "filler_$i";
  14. $$var = 'banana';
  15. }
  16.  
  17.  
  18. $diff = ($array_size = report_memory('After banana')) - $start;
  19. echo "Fill Size: {$diff}kb\n\n";
  20.  
  21. $vars = get_defined_vars();
  22.  
  23. $grew = ($first_get = report_memory('After get_defined_vars()')) - $array_size;
  24. echo "Growth from get_defined_vars(): {$grew}kb\n\n";
  25.  
  26. $vars = get_defined_vars();
  27.  
  28. $grew = report_memory('One more, for fun') - $first_get;
  29. echo "Second Get grew: {$grew}kb\n";
  30.  
  31. unset($vars);
  32.  
  33. report_memory('After unset()');
  34.  
  35. echo "\nEXTRA\n";
  36.  
  37. // direct pass to a conditional
  38. $test = (array_key_exists('filler_100000',get_defined_vars()) && is_null($filler_100000));
  39.  
  40. report_memory('After Conditional Inline');
  41.  
  42. // direct pass to function
  43.  
  44. report_memory('After Direct Pass');
  45.  
  46. function test() {
  47. $all = get_defined_vars();
  48. return !empty($all);
  49. }
  50.  
  51. // In Fucntion
  52. $test = test();
  53.  
  54. report_memory('Use in Function');
Success #stdin #stdout 0.03s 20568KB
stdin
Standard input is empty
stdout
Start of stript: 117.164kb

After banana: 1022.752kb
Fill Size: 905.588kb

After get_defined_vars(): 1649.12kb
Growth from get_defined_vars(): 626.368kb

One more, for fun: 2275.572kb
Second Get grew: 626.452kb
After unset(): 1023.04kb

EXTRA
After Conditional Inline: 1023.112kb
After Direct Pass: 1023.112kb
Use in Function: 1023.216kb