fork 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. $array = array_fill(0,10000, 'banana');
  13.  
  14.  
  15. $diff = ($array_size = report_memory('After banana')) - $start;
  16. echo "Fill Size: {$diff}kb\n\n";
  17.  
  18. $vars = get_defined_vars();
  19.  
  20. $grew = ($first_get = report_memory('After get_defined_vars()')) - $array_size;
  21. echo "Growth from get_defined_vars(): {$grew}kb\n\n";
  22.  
  23. $vars = get_defined_vars();
  24.  
  25. $grew = report_memory('One more, for fun') - $first_get;
  26. echo "Second Get grew: {$grew}kb\n";
  27.  
  28. unset($vars);
  29.  
  30. report_memory('After unset()');
  31.  
  32. echo "\nEXTRA\n";
  33.  
  34. // direct pass to a conditional
  35. $test = (array_key_exists('filler_100000',get_defined_vars()) && is_null($filler_100000));
  36.  
  37. report_memory('After Conditional Inline');
  38.  
  39. // direct pass to function
  40.  
  41. report_memory('After Direct Pass');
  42.  
  43. function test() {
  44. $all = get_defined_vars();
  45. return !empty($all);
  46. }
  47.  
  48. // In Fucntion
  49. $test = test();
  50.  
  51. report_memory('Use in Function');
Success #stdin #stdout 0.01s 20568KB
stdin
Standard input is empty
stdout
Start of stript: 116.944kb

After banana: 622.732kb
Fill Size: 505.788kb

After get_defined_vars(): 623.6kb
Growth from get_defined_vars(): 0.86800000000005kb

One more, for fun: 624.5kb
Second Get grew: 0.89999999999998kb
After unset(): 623.02kb

EXTRA
After Conditional Inline: 623.092kb
After Direct Pass: 623.092kb
Use in Function: 623.196kb