Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 9b94dde

Browse files
issue #1 - tests for DateTime objects, only for php-5.3+
1 parent 13d60c0 commit 9b94dde

File tree

3 files changed

+85
-45
lines changed

3 files changed

+85
-45
lines changed

‎README.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ env PHP_MEMORY_LIMIT=64 PHP_TIME_LIMIT=30 php bench.php
7777

7878
На многих хостингах параметры `memory_limit` и `max_execution_time` могут быть жестко зафиксированы.
7979

80-
В этом случа скрипт не сможет установить переданные в него значения параметров,
80+
В этом случае скрипт не сможет установить переданные в него значения параметров,
8181
по крайней мере не выше лимитов.
8282

8383
Пересчет времени выполнения скрипта будет произведен по наименьшим результирующим значениям.

‎bench.php‎

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
# Author : Sergey Dryabzhinsky #
1111
# Company : Rusoft Ltd, Russia #
1212
# Date : Nov 26, 2021 #
13-
# Version : 1.0.43 #
13+
# Version : 1.0.44-dev #
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 #
@@ -32,9 +32,9 @@ function print_pre($msg) {
3232
flush();
3333
}
3434

35-
$scriptVersion = '1.0.43';
35+
$scriptVersion = '1.0.44-dev';
3636

37-
// Special striing to flush buffers, nginx for example
37+
// Special string to flush buffers, nginx for example
3838
$flushStr = '<!-- '.str_repeat("", 4096).' -->';
3939

4040
if (php_sapi_name() != 'cli') {
@@ -388,7 +388,7 @@ function print_pre($msg) {
388388
// Should be passed into 600 seconds
389389
$testsLoopLimits = array(
390390
'01_math' => 2000000,
391-
// That limit gives around 256Mb too
391+
// That limit gives around 128Mb too
392392
'02_string_concat' => 7000000,
393393
'03_1_string_number_concat' => 5000000,
394394
'03_2_string_number_format' => 5000000,
@@ -419,6 +419,7 @@ function print_pre($msg) {
419419
'26_3_magic' => 10000000,
420420
'27_simplexml' => 50000,
421421
'28_domxml' => 50000,
422+
'29_datetime' => 500000,
422423
);
423424
$totalOps = 0;
424425

‎php5.inc‎

Lines changed: 79 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -157,67 +157,106 @@ function test_26_3_Class_Magic_Methods()
157157

158158
function test_27_SimpleXml()
159159
{
160-
global $testsLoopLimits, $totalOps, $emptyResult;
161-
162-
$count = $testsLoopLimits['27_simplexml'];
163-
$time_start = get_microtime();
164-
165-
if (!class_exists('SimpleXMLElement', false)) {
166-
return $emptyResult;
167-
}
168-
169-
$file = 'test.xml';
170-
if (!is_file($file)) {
171-
return $emptyResult;
172-
}
173-
174-
$xmlStr = file_get_contents($file);
175-
176-
$a = 0;
177-
for ($i = 0; $i < $count; $i++) {
178-
$rss = new SimpleXMLElement($xmlStr);
179-
if ($rss->channel->title == 'PECL: Latest releases') $a++;
180-
if ($rss->item[1]->title == 'rdkafka 5.0.1') $a++;
181-
}
182-
$totalOps += $count;
183-
return format_result_test(get_microtime() - $time_start, $count, mymemory_usage());
160+
global $testsLoopLimits, $totalOps, $emptyResult;
161+
162+
$count = $testsLoopLimits['27_simplexml'];
163+
$time_start = get_microtime();
164+
165+
if (!class_exists('SimpleXMLElement', false)) {
166+
return $emptyResult;
167+
}
168+
169+
$file = 'test.xml';
170+
if (!is_file($file)) {
171+
return $emptyResult;
172+
}
173+
174+
$xmlStr = file_get_contents($file);
175+
176+
$a = 0;
177+
for ($i = 0; $i < $count; $i++) {
178+
$rss = new SimpleXMLElement($xmlStr);
179+
if ($rss->channel->title == 'PECL: Latest releases') $a++;
180+
if ($rss->item[1]->title == 'rdkafka 5.0.1') $a++;
181+
}
182+
$totalOps += $count;
183+
return format_result_test(get_microtime() - $time_start, $count, mymemory_usage());
184184
}
185185

186186
function test_28_DomXml()
187187
{
188-
global $testsLoopLimits, $totalOps, $emptyResult;
188+
global $testsLoopLimits, $totalOps, $emptyResult;
189189

190-
$count = $testsLoopLimits['28_domxml'];
191-
$time_start = get_microtime();
190+
$count = $testsLoopLimits['28_domxml'];
191+
$time_start = get_microtime();
192192

193-
if (!class_exists('DOMDocument', false)) {
194-
return $emptyResult;
195-
}
193+
if (!class_exists('DOMDocument', false)) {
194+
return $emptyResult;
195+
}
196196

197-
$file = 'test.xml';
198-
if (!is_file($file)) {
199-
return $emptyResult;
200-
}
197+
$file = 'test.xml';
198+
if (!is_file($file)) {
199+
return $emptyResult;
200+
}
201201

202-
$xmlStr = file_get_contents($file);
202+
$xmlStr = file_get_contents($file);
203203

204204
$a = 0;
205205
for ($i = 0; $i < $count; $i++) {
206206
$rss = new DOMDocument('1.0', 'utf-8');
207207
$rss->loadXML($xmlStr);
208208

209-
$channel = $rss->getElementsByTagName('channel');
210-
$channel = $channel->item(0);
209+
$channels = $rss->getElementsByTagName('channel');
210+
/** @var \DOMNodeList $channels */
211+
$channel = $channels->item(0);
212+
/** @var \DOMElement $channel */
211213
$chTitle = $channel->getElementsByTagName('title');
214+
/** @var \DOMNodeList $chTitle */
212215
$chTitle = $chTitle->item(0);
213216
if ($chTitle->nodeValue == 'PECL: Latest releases') $a++;
214217

215218
$items = $rss->getElementsByTagName('item');
219+
/** @var \DOMNodeList $items */
216220
$item = $items->item(1);
221+
/** @var \DOMElement $item */
217222
$iTitle = $item->getElementsByTagName('title');
223+
/** @var \DOMNodeList $iTitle */
218224
$iTitle = $iTitle->item(0);
219225
if ($iTitle->nodeValue == 'rdkafka 5.0.1') $a++;
220-
}
221-
$totalOps += $count;
222-
return format_result_test(get_microtime() - $time_start, $count, mymemory_usage());
226+
}
227+
$totalOps += $count;
228+
return format_result_test(get_microtime() - $time_start, $count, mymemory_usage());
229+
}
230+
231+
// ------------------- DateTime classes ---------------------
232+
233+
function test_29_DateTime()
234+
{
235+
global $testsLoopLimits, $totalOps, $emptyResult;
236+
237+
$count = $testsLoopLimits['29_datetime'];
238+
$time_start = get_microtime();
239+
240+
if (!class_exists('DateTime', false)) {
241+
return $emptyResult;
242+
}
243+
if (!class_exists('DateInterval', false)) {
244+
return $emptyResult;
245+
}
246+
247+
$now = new DateTime();
248+
$day = new DateInterval("P1D");
249+
$year = new DateInterval("P1Y");
250+
251+
$a = 0;
252+
for ($i = 0; $i < $count; $i++) {
253+
$unix = DateTime::createFromFormat("U", $i);
254+
$unix->sub($year);
255+
$unix->add($day);
256+
$diff = $now->diff($unix);
257+
$a += $diff->y % 2;
258+
}
259+
$totalOps += $count;
260+
return format_result_test(get_microtime() - $time_start, $count, mymemory_usage());
223261
}
262+

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /