Skip to content

Commit 8cf3bdd

Browse files
committed
Added testing on bench of native array storing json data or serialized array.
1 parent 6e9e18c commit 8cf3bdd

2 files changed

Lines changed: 87 additions & 20 deletions

File tree

ext/README.md

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -83,42 +83,44 @@ implementation of same algorithm.
8383
String store test with native C extension:
8484
=======================================================================
8585
Structures | add 1048576 | loop all | total time | memory usage
86-
LessRam Highest | 0.23s | 0.15s | 0.37s | 19MB
87-
LessRam Moderate | 0.18s | 0.05s | 0.23s | 34MB
86+
LessRam Highest | 0.21s | 0.14s | 0.36s | 19MB
87+
LessRam Moderate | 0.19s | 0.05s | 0.25s | 34MB
8888
LessRam Lowest | 0.18s | 0.05s | 0.23s | 40MB
8989
SplFixedArray | 0.10s | 0.03s | 0.15s | 65MB
9090
SplDoublyLinkedL | 0.23s | 0.03s | 0.28s | 89MB
91-
Ds\Vector | 0.15s | 0.02s | 0.20s | 72MB
92-
Ds\Map | 0.22s | 0.03s | 0.27s | 85MB
93-
Native Array | 0.13s | 0.02s | 0.17s | 81MB
91+
Ds\Vector | 0.14s | 0.02s | 0.19s | 72MB
92+
Ds\Map | 0.24s | 0.03s | 0.29s | 85MB
93+
PHP Array | 0.12s | 0.02s | 0.17s | 81MB
9494

9595

9696
=======================================================================
9797
Array store test with native C extension:
9898
=======================================================================
9999
Structures | add 1048576 | loop all | total time | memory usage
100-
LessRam Highest | 0.44s | 0.55s | 0.99s | 32MB
101-
LessRam Moderate | 0.40s | 0.51s | 0.91s | 47MB
102-
LessRam Lowest | 0.35s | 0.39s | 0.74s | 49MB
103-
SplFixedArray | 0.36s | 0.23s | 0.61s | 441MB
104-
SplDoublyLinkedL | 0.30s | 0.29s | 0.66s | 481MB
105-
Ds\Vector | 0.23s | 0.23s | 0.54s | 448MB
106-
Ds\Map | 0.27s | 0.25s | 0.59s | 461MB
107-
Native Array | 0.22s | 0.12s | 0.43s | 457MB
100+
LessRam Highest | 0.47s | 0.56s | 1.03s | 32MB
101+
LessRam Moderate | 0.41s | 0.52s | 0.94s | 47MB
102+
LessRam Lowest | 0.36s | 0.39s | 0.75s | 49MB
103+
SplFixedArray | 0.35s | 0.23s | 0.61s | 441MB
104+
SplDoublyLinkedL | 0.31s | 0.29s | 0.67s | 481MB
105+
Ds\Vector | 0.23s | 0.23s | 0.55s | 448MB
106+
Ds\Map | 0.29s | 0.25s | 0.62s | 461MB
107+
PHP Array | 0.22s | 0.12s | 0.42s | 457MB
108+
-> JSON | 0.47s | 0.42s | 1.03s | 289MB
109+
-> Serialized | 0.29s | 0.28s | 0.60s | 289MB
108110

109111

110112
=======================================================================
111113
Integers store test with native C extension:
112114
=======================================================================
113115
Structures | add 1048576 | loop all | total time | memory usage
114116
LessRam Highest | 0.17s | 0.11s | 0.28s | 8MB
115-
LessRam Moderate | 0.15s | 0.05s | 0.21s | 23MB
117+
LessRam Moderate | 0.15s | 0.05s | 0.20s | 23MB
116118
LessRam Lowest | 0.16s | 0.05s | 0.21s | 25MB
117119
SplFixedArray | 0.02s | 0.02s | 0.05s | 17MB
118120
SplDoublyLinkedL | 0.15s | 0.02s | 0.18s | 41MB
119-
Ds\Vector | 0.10s | 0.02s | 0.13s | 24MB
120-
Ds\Map | 0.15s | 0.02s | 0.17s | 37MB
121-
Native Array | 0.06s | 0.01s | 0.08s | 33MB
121+
Ds\Vector | 0.09s | 0.02s | 0.13s | 24MB
122+
Ds\Map | 0.14s | 0.02s | 0.17s | 37MB
123+
PHP Array | 0.06s | 0.01s | 0.08s | 33MB
122124
```
123125

124126
## TODO

ext/examples/bench.php

Lines changed: 68 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -289,7 +289,7 @@ function test_storeStrings($amount=1024*1024, $real=false)
289289

290290
printf(
291291
$format,
292-
'Native Array',
292+
'PHP Array',
293293
number_format($native_add_time, 2) . "s",
294294
number_format($native_loop_time, 2) . "s",
295295
number_format($native_total_time, 2) . "s",
@@ -489,6 +489,52 @@ function test_storeArrays($amount=1024*1024, $real=false)
489489

490490
$format = "%16.16s | %12.12s | %8.8s | %10.10s | %13.13s\n";
491491

492+
493+
// Mesure native storing as json
494+
$native_json_total_time = microtime(true);
495+
$list = [];
496+
497+
// adding items
498+
$native_json_add_time = microtime(true);
499+
for($i=0; $i<$amount; $i++)
500+
{
501+
$list[] = json_encode(["name" => "hello world" . $i]);
502+
}
503+
$native_json_add_time = microtime(true) - $native_json_add_time;
504+
505+
// loop all data
506+
$native_json_loop_time = microtime(true);
507+
foreach($list as $value){ json_decode($value); }
508+
$native_json_loop_time = microtime(true) - $native_json_loop_time;
509+
510+
$native_json_memory_usage = ceil(memory_get_usage($real) / 1024 / 1024) . "MB";
511+
512+
$native_json_total_time = microtime(true) - $native_json_total_time;
513+
514+
515+
// Mesure native storing as serialized
516+
$native_serial_total_time = microtime(true);
517+
$list = [];
518+
519+
// adding items
520+
$native_serial_add_time = microtime(true);
521+
for($i=0; $i<$amount; $i++)
522+
{
523+
$list[] = serialize(["name" => "hello world" . $i]);
524+
}
525+
$native_serial_add_time = microtime(true) - $native_serial_add_time;
526+
527+
// loop all data
528+
$native_serial_loop_time = microtime(true);
529+
foreach($list as $value){ unserialize($value); }
530+
$native_serial_loop_time = microtime(true) - $native_serial_loop_time;
531+
532+
$native_serial_memory_usage = ceil(memory_get_usage($real) / 1024 / 1024) . "MB";
533+
534+
$native_serial_total_time = microtime(true) - $native_serial_total_time;
535+
536+
$format = "%16.16s | %12.12s | %8.8s | %10.10s | %13.13s\n";
537+
492538
printf(
493539
$format,
494540
'Structures',
@@ -566,12 +612,31 @@ function test_storeArrays($amount=1024*1024, $real=false)
566612

567613
printf(
568614
$format,
569-
'Native Array',
615+
'PHP Array ',
570616
number_format($native_add_time, 2) . "s",
571617
number_format($native_loop_time, 2) . "s",
572618
number_format($native_total_time, 2) . "s",
573619
$native_memory_usage
574620
);
621+
622+
printf(
623+
$format,
624+
' -> JSON ',
625+
number_format($native_json_add_time, 2) . "s",
626+
number_format($native_json_loop_time, 2) . "s",
627+
number_format($native_json_total_time, 2) . "s",
628+
$native_json_memory_usage
629+
);
630+
631+
printf(
632+
$format,
633+
' -> Serialized',
634+
number_format($native_serial_add_time, 2) . "s",
635+
number_format($native_serial_loop_time, 2) . "s",
636+
number_format($native_serial_total_time, 2) . "s",
637+
$native_serial_memory_usage
638+
);
639+
575640
}
576641

577642
function test_storeIntegers($amount=1024*1024, $real=false)
@@ -842,7 +907,7 @@ function test_storeIntegers($amount=1024*1024, $real=false)
842907

843908
printf(
844909
$format,
845-
'Native Array',
910+
'PHP Array',
846911
number_format($native_add_time, 2) . "s",
847912
number_format($native_loop_time, 2) . "s",
848913
number_format($native_total_time, 2) . "s",

0 commit comments

Comments
 (0)