<?php

$di = new Zend\Di\Di();
for ($i = 0; $i < $argv[1]; $i++) {
    //This is required otherwise ->newinstance() only creates a new instance of the top level of the code
    //If there's a better way to configure this let me know
    $di = new Zend\Di\Di();
    $a = $di->newinstance('J');
}
$results = ['time' => 0, 'files' => count(get_included_files()), 'memory' => memory_get_peak_usage() / 1024 / 1024];
echo json_encode($results);
<?php

$di = new Zend\Di\Di();
//trigger autoloader for all required files
$a = $di->newinstance('A');
unset($a);
$t1 = microtime(true);
for ($i = 0; $i < 10000; $i++) {
    $a = $di->newinstance('A');
}
$t2 = microtime(true);
$results = ['time' => $t2 - $t1, 'files' => count(get_included_files()), 'memory' => memory_get_peak_usage() / 1024 / 1024];
echo json_encode($results);
<?php

$di = new Zend\Di\Di();
//trigger autoloader for all required files
$a1 = $di->get('B');
$a2 = $di->get('B');
$t1 = microtime(true);
for ($i = 0; $i < 10000; $i++) {
    $a = $di->newinstance('B');
}
$t2 = microtime(true);
$results = ['time' => $t2 - $t1, 'files' => count(get_included_files()), 'memory' => memory_get_peak_usage() / 1024 / 1024];
echo json_encode($results);