<?php
/**
* Object hashing tests.
*/
$sos = new SplObjectStorage();
$usage = "php %s INTEGER \t - Run the SPLObjectStorage vs. Array test with INTEGER size.\n";
if (count($argv) < 2) {
printf($usage, $argv[0]);
exit(1);
}
$docs = array();
$iterations = 100000; //100000;
echo "Count of DOMDocuments: {$iterations}" . PHP_EOL. PHP_EOL;
for ($i = 0; $i < $iterations; ++$i) {
$doc = new DOMDocument();
//$doc = new stdClass();
$docs[] = $doc;
}
$start = $finis = 0;
$mem_empty = memory_get_usage();
// Load the SplObjectStorage
$start = microtime(TRUE);
foreach ($docs as $d) {
$sos->attach($d);
}
$finis = microtime(TRUE);
$time_to_fill = $finis - $start;
// Check membership on the object storage
$start = microtime(true);
foreach ($docs as $d) {
$sos->contains($d);
}
$finis = microtime(true);
$time_to_check = $finis - $start;
$mem_spl = memory_get_usage();
$mem_used = $mem_spl - $mem_empty;
printf("SplObjectStorage:\nTime to fill: %0.12f. [s]\nTime to check: %0.12f. [s]\nMemory: %d [MB]\n\n", $time_to_fill, $time_to_check, $mem_used/1024/1024);
unset($sos);
$mem_empty = memory_get_usage();
// Test arrays:
$start = microtime(TRUE);
$arr = new SplFixedArray($iterations);
// Load the array
$_i = 0;
foreach ($docs as $d) {
$arr[$_i] = $d;
$_i++;
}
$finis = microtime(TRUE);
$time_to_fill = $finis - $start;
// Check membership on the array
$start = microtime(FALSE);
$_i = 0;
foreach ($docs as $d) {
isset($arr[$_i]);
$_i++;
}
$finis = microtime(FALSE);
$time_to_check = $finis - $start;
$mem_arr = memory_get_usage();
$mem_used = $mem_arr - $mem_empty;
printf("SplFixedArray:\nTime to fill: %0.12f. [s]\nTime to check: %0.12f. [s]\nMemory: %d [MB]\n\n", $time_to_fill, $time_to_check, $mem_used/1024/1024);
$mem_empty = memory_get_usage();
// Test arrays:
$start = microtime(TRUE);
$arr = array();
$_i =0;
// Load the array
foreach ($docs as $d) {
$arr[$_i] = $d;
$_i++;
}
$finis = microtime(TRUE);
$time_to_fill = $finis - $start;
// Check membership on the array
$start = microtime(FALSE);
$_i =0;
foreach ($docs as $d) {
isset($arr[$_i]);
$_i++;
}
$finis = microtime(FALSE);
$time_to_check = $finis - $start;
$mem_arr = memory_get_usage();
$mem_used = $mem_arr - $mem_empty;
printf("Arrays:\nTime to fill: %0.12f. [s]\nTime to check: %0.12f. [s]\nMemory: %d [MB]\n\n", $time_to_fill, $time_to_check, $mem_used/1024/1024);
?>
- Output for 5.1.0 - 5.1.6, 5.2.0 - 5.2.17, 5.3.0 - 5.3.29, 5.4.0 - 5.4.45, 5.5.0 - 5.5.38, 5.6.0 - 5.6.40, 7.0.0 - 7.0.33, 7.1.0 - 7.1.33, 7.2.0 - 7.2.26, 7.3.0 - 7.3.13, 7.4.0 - 7.4.1
- php /in/2vaj9 INTEGER - Run the SPLObjectStorage vs. Array test with INTEGER size.
Process exited with code 1. - Output for 5.0.0 - 5.0.5
- Fatal error: Class 'SplObjectStorage' not found in /in/2vaj9 on line 5
Process exited with code 255. - Output for 4.3.2 - 4.3.11, 4.4.0 - 4.4.9
- Fatal error: Cannot instantiate non-existent class: splobjectstorage in /in/2vaj9 on line 5
Process exited with code 255. - Output for 4.3.0 - 4.3.1
- Fatal error: Cannot instantiate non-existent class: splobjectstorage in /in/2vaj9 on line 5
preferences:
244.4 ms | 401 KiB | 325 Q