Skip to content

Commit 892f64d

Browse files
Version 1.0.23
- update try-catch exception test - adjust tests times if cpu is Atom or ARM - they are SLOW
1 parent 27999f8 commit 892f64d

File tree

3 files changed

+89
-42
lines changed

3 files changed

+89
-42
lines changed

README.md

Lines changed: 46 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,11 @@ env PHP_MEMORY_LIMIT=64 PHP_TIME_LIMIT=30 php bench.php
5656

5757
## ChangeLog
5858

59+
@ 2017-09-04, v1.0.23
60+
61+
* Обновили тест на работу с try-catch блоком - отдельные под-тесты: без блока, блок без exception, и с exception
62+
* Добавили пересчет времени тестов, если процессор Atom или ARM - они реально медленные
63+
5964
@ 2017-06-03, v1.0.22
6065

6166
* Добавили тесты производительности новых операций в php-7
@@ -178,54 +183,61 @@ env PHP_MEMORY_LIMIT=64 PHP_TIME_LIMIT=30 php bench.php
178183

179184
```
180185
<pre>
186+
<<< WARNING >>>
187+
CPU is in powersaving mode? Set CPU governor to 'performance'!
188+
Fire up CPU and recalculate MHz!
189+
</pre>
190+
<pre>
181191
-------------------------------------------------------------------------------------------
182192
| PHP BENCHMARK SCRIPT |
183193
-------------------------------------------------------------------------------------------
184-
Start: : 2017-06-03 03:46:26
185-
Server: : Linux/4.4.0-79-generic x86_64
194+
Start: : 2017-09-04 18:57:11
195+
Server: : Linux/4.10.0-33-generic x86_64
186196
Platform: : Linux
187197
CPU: :
188198
model : Intel(R) Core(TM) i5-6600K CPU @ 3.50GHz
189199
cores : 4
190-
MHz : 3729.55MHz
200+
MHz : 3832.611MHz
191201
Memory : 256 Mb available
192-
Benchmark version: : 1.0.22
193-
PHP version: : 7.0.14-Ubuntu/16.04-SergeyD/9.3.1
202+
Benchmark version: : 1.0.23
203+
PHP version: : 7.0.23-Ubuntu/16.04-SergeyD/11.1
194204
Max execution time: : 600 sec.
195205
Crypt hash algo: : MD5
196206
-------------------------------------------------------------------------------------------
197207
TEST NAME : SECONDS | OP/SEC | OP/SEC/MHz | MEMORY
198208
-------------------------------------------------------------------------------------------
199-
01_math : 3.175 sec | 440.92 kOp/s | 118.22 Ops/MHz | 2 Mb
200-
02_string_concat : 0.227 sec | 33.94 MOp/s | 9.10 kOps/MHz | 128.84 Mb
201-
03_1_string_number_concat : 1.737 sec | 2.88 MOp/s | 771.71 Ops/MHz | 4 Mb
202-
03_2_string_number_format : 1.522 sec | 3.28 MOp/s | 880.71 Ops/MHz | 4 Mb
203-
04_string_simple_functions : 1.801 sec | 721.69 kOp/s | 193.50 Ops/MHz | 4 Mb
204-
05_string_multibyte : 4.146 sec | 31.35 kOp/s | 8.41 Ops/MHz | 4 Mb
205-
06_string_manipulation : 2.451 sec | 530.44 kOp/s | 142.23 Ops/MHz | 4 Mb
206-
07_regex : 2.000 sec | 650.01 kOp/s | 174.29 Ops/MHz | 4 Mb
207-
08_1_hashing : 2.061 sec | 630.78 kOp/s | 169.13 Ops/MHz | 4 Mb
208-
08_2_crypt : 6.074 sec | 1.65 kOp/s | 0.44 Ops/MHz | 4 Mb
209-
09_json_encode : 1.644 sec | 790.92 kOp/s | 212.07 Ops/MHz | 4 Mb
210-
10_json_decode : 2.109 sec | 616.35 kOp/s | 165.26 Ops/MHz | 4 Mb
211-
11_serialize : 1.255 sec | 1.04 MOp/s | 277.68 Ops/MHz | 4 Mb
212-
12_unserialize : 1.853 sec | 701.46 kOp/s | 188.08 Ops/MHz | 4 Mb
213-
13_array_fill : 2.064 sec | 24.22 MOp/s | 6.50 kOps/MHz | 12 Mb
214-
14_array_range : 0.513 sec | 194.97 kOp/s | 52.28 Ops/MHz | 12 Mb
215-
14_array_unset : 1.752 sec | 28.54 MOp/s | 7.65 kOps/MHz | 12 Mb
216-
15_loops : 1.860 sec | 204.29 MOp/s | 54.78 kOps/MHz | 4 Mb
217-
16_loop_ifelse : 1.335 sec | 67.41 MOp/s | 18.08 kOps/MHz | 4 Mb
218-
17_loop_ternary : 3.197 sec | 28.15 MOp/s | 7.55 kOps/MHz | 4 Mb
219-
18_1_loop_defined_access : 0.577 sec | 34.68 MOp/s | 9.30 kOps/MHz | 4 Mb
220-
18_2_loop_undefined_access : 3.892 sec | 5.14 MOp/s | 1.38 kOps/MHz | 4 Mb
221-
19_type_functions : 1.754 sec | 2.85 MOp/s | 764.51 Ops/MHz | 4 Mb
222-
20_type_conversion : 1.163 sec | 4.30 MOp/s | 1.15 kOps/MHz | 4 Mb
223-
21_loop_exceptiontrycatch : 2.160 sec | 1.85 MOp/s | 496.50 Ops/MHz | 4 Mb
224-
22_loop_null_op : 1.363 sec | 36.69 MOp/s | 9.84 kOps/MHz | 4 Mb
225-
23_loop_spaceship_op : 1.396 sec | 35.83 MOp/s | 9.61 kOps/MHz | 4 Mb
209+
01_math : 2.615 sec | 535.44 kOp/s | 139.71 Ops/MHz | 2 Mb
210+
02_string_concat : 0.224 sec | 34.44 MOp/s | 8.99 kOps/MHz | 128.84 Mb
211+
03_1_string_number_concat : 1.622 sec | 3.08 MOp/s | 804.54 Ops/MHz | 4 Mb
212+
03_2_string_number_format : 1.396 sec | 3.58 MOp/s | 934.30 Ops/MHz | 4 Mb
213+
04_string_simple_functions : 1.559 sec | 833.89 kOp/s | 217.58 Ops/MHz | 4 Mb
214+
05_string_multibyte : 4.149 sec | 31.33 kOp/s | 8.17 Ops/MHz | 4 Mb
215+
06_string_manipulation : 2.280 sec | 570.09 kOp/s | 148.75 Ops/MHz | 4 Mb
216+
07_regex : 1.784 sec | 728.74 kOp/s | 190.14 Ops/MHz | 4 Mb
217+
08_1_hashing : 1.934 sec | 672.15 kOp/s | 175.38 Ops/MHz | 4 Mb
218+
08_2_crypt : 5.760 sec | 1.74 kOp/s | 0.45 Ops/MHz | 4 Mb
219+
09_json_encode : 1.550 sec | 838.77 kOp/s | 218.85 Ops/MHz | 4 Mb
220+
10_json_decode : 1.878 sec | 692.33 kOp/s | 180.64 Ops/MHz | 4 Mb
221+
11_serialize : 1.172 sec | 1.11 MOp/s | 289.36 Ops/MHz | 4 Mb
222+
12_unserialize : 1.753 sec | 741.59 kOp/s | 193.50 Ops/MHz | 4 Mb
223+
13_array_fill : 1.958 sec | 25.53 MOp/s | 6.66 kOps/MHz | 12 Mb
224+
14_array_range : 0.495 sec | 201.91 kOp/s | 52.68 Ops/MHz | 12 Mb
225+
14_array_unset : 1.482 sec | 33.73 MOp/s | 8.80 kOps/MHz | 12 Mb
226+
15_loops : 1.895 sec | 200.50 MOp/s | 52.31 kOps/MHz | 4 Mb
227+
16_loop_ifelse : 1.523 sec | 59.09 MOp/s | 15.42 kOps/MHz | 4 Mb
228+
17_loop_ternary : 2.867 sec | 31.39 MOp/s | 8.19 kOps/MHz | 4 Mb
229+
18_1_loop_defined_access : 0.491 sec | 40.73 MOp/s | 10.63 kOps/MHz | 4 Mb
230+
18_2_loop_undefined_access : 3.530 sec | 5.67 MOp/s | 1.48 kOps/MHz | 4 Mb
231+
19_type_functions : 1.564 sec | 3.20 MOp/s | 834.02 Ops/MHz | 4 Mb
232+
20_type_conversion : 1.016 sec | 4.92 MOp/s | 1.28 kOps/MHz | 4 Mb
233+
21_0_loop_exception_none : 0.031 sec | 129.87 MOp/s | 33.88 kOps/MHz | 4 Mb
234+
21_1_loop_exception_try : 0.036 sec | 111.18 MOp/s | 29.01 kOps/MHz | 4 Mb
235+
21_2_loop_exception_catch : 2.038 sec | 1.96 MOp/s | 512.14 Ops/MHz | 4 Mb
236+
22_loop_null_op : 1.246 sec | 40.14 MOp/s | 10.47 kOps/MHz | 4 Mb
237+
23_loop_spaceship_op : 1.106 sec | 45.20 MOp/s | 11.79 kOps/MHz | 4 Mb
226238
-------------------------------------------------------------------------------------------
227-
Total time: : 55.081 sec.
239+
Total time: : 50.954 sec.
228240
Current memory usage: : 4 Mb.
229-
Peak memory usage: : 125.37 Mb.
241+
Peak memory usage: : 125.26 Mb.
230242
</pre>
231243
```

bench.php

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,16 @@
99
# Company : Code24 BV, The Netherlands #
1010
# Author : Sergey Dryabzhinsky #
1111
# Company : Rusoft Ltd, Russia #
12-
# Date : Jun 03, 2017 #
13-
# version : 1.0.22 #
12+
# Date : Sep 04, 2017 #
13+
# version : 1.0.23 #
1414
# License : Creative Commons CC-BY license #
1515
# Website : https://github.com/rusoft/php-simple-benchmark-script #
1616
# Website : https://git.rusoft.ru/open-source/php-simple-benchmark-script #
1717
# #
1818
################################################################################
1919
*/
2020

21-
$scriptVersion = '1.0.22';
21+
$scriptVersion = '1.0.23';
2222

2323
// Used in hacks/fixes checks
2424
$phpversion = explode('.', PHP_VERSION);
@@ -181,7 +181,7 @@
181181
/** ---------------------------------- Tests limits - to recalculate -------------------------------------------- */
182182

183183
// Gathered on this machine
184-
$loopMaxPhpTimesMHz = 3800;
184+
$loopMaxPhpTimesMHz = 3900;
185185
// How much time needed for tests on this machine
186186
$loopMaxPhpTimes = array(
187187
'4.4' => 220,
@@ -359,7 +359,7 @@ function getCpuInfo($fireUpCpu = false)
359359

360360
if ($fireUpCpu) {
361361
// Fire up CPU, Don't waste much time here
362-
$i = 20000000;
362+
$i = 30000000;
363363
while ($i--) ;
364364
}
365365

@@ -495,7 +495,7 @@ function mymemory_usage()
495495

496496
$cpuInfo = getCpuInfo();
497497
// CPU throttling?
498-
if (abs($cpuInfo['mips'] - $cpuInfo['mhz']) > 400) {
498+
if (abs($cpuInfo['mips'] - $cpuInfo['mhz']) > 300) {
499499
print("<pre>\n<<< WARNING >>>\nCPU is in powersaving mode? Set CPU governor to 'performance'!\n Fire up CPU and recalculate MHz!\n</pre>" . PHP_EOL);
500500
// TIME WASTED HERE
501501
$cpuInfo = getCpuInfo(true);
@@ -553,6 +553,13 @@ function mymemory_usage()
553553
$factor = 1.0 * ($maxTime - 1) / $needTime;
554554
}
555555
}
556+
557+
$cpuModel = $cpuInfo['model'];
558+
if (strpos($cpuModel, 'Atom') !== false || strpos($cpuInfo['model'], 'ARM') !== false) {
559+
print("<pre>\n<<< WARNING >>>\nYour processor '{$cpuModel}' have too low performance!\n</pre>" . PHP_EOL);
560+
$factor = 1.0/3;
561+
}
562+
556563
if ($factor < 1.0) {
557564
// Adjust more only if maxTime too small
558565
if ($cpuInfo['mhz'] < $loopMaxPhpTimesMHz) {
@@ -567,7 +574,7 @@ function mymemory_usage()
567574
$factor *= 1.0 * $dumbTestTimeMax / $dumbTestTime;
568575
}
569576

570-
print("<pre>\n<<< WARNING >>>\nMax execution time is less than needed for tests!\n Will try to reduce tests time as much as possible.\n</pre>" . PHP_EOL);
577+
print("<pre>\n<<< WARNING >>>\nMax execution time is less than needed for tests!\nWill try to reduce tests time as much as possible.\n</pre>" . PHP_EOL);
571578
foreach ($testsLoopLimits as $tst => $loops) {
572579
$testsLoopLimits[$tst] = (int)($loops * $factor);
573580
}

php5.inc

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,42 @@
44
* Special test only for php 5+.
55
* php 4.x can't compile try construction.
66
*/
7-
function test_21_Loop_ExceptionTryCatch()
7+
function test_21_0_Loop_Exception_None()
8+
{
9+
global $testsLoopLimits;
10+
11+
$count = $testsLoopLimits['21_loop_except'];
12+
$time_start = get_microtime();
13+
for ($i = 0; $i < $count; $i++) {
14+
$a = $i;
15+
}
16+
return format_result_test(get_microtime() - $time_start, $count, mymemory_usage());
17+
}
18+
19+
function test_21_1_Loop_Exception_Try()
20+
{
21+
global $testsLoopLimits;
22+
23+
$count = $testsLoopLimits['21_loop_except'];
24+
$time_start = get_microtime();
25+
for ($i = 0; $i < $count; $i++) {
26+
try {
27+
$a = $i;
28+
} catch (Exception $e) {
29+
}
30+
}
31+
return format_result_test(get_microtime() - $time_start, $count, mymemory_usage());
32+
}
33+
34+
function test_21_2_Loop_Exception_Catch()
835
{
936
global $testsLoopLimits;
1037

1138
$count = $testsLoopLimits['21_loop_except'];
1239
$time_start = get_microtime();
1340
for ($i = 0; $i < $count; $i++) {
1441
try {
42+
$a = $i;
1543
throw new Exception($i);
1644
} catch (Exception $e) {
1745
}

0 commit comments

Comments
 (0)