<?php /** * Run the script indefinitely seconds with the loop from the factory and report every 2 seconds: * php 95-benchmark-memory.php * Run the script for 30 seconds with the stream_select loop and report every 10 seconds: * php 95-benchmark-memory.php -t 30 -l StreamSelect -r 10 */ use React\EventLoop\Factory; use React\EventLoop\LoopInterface; use React\EventLoop\TimerInterface; require __DIR__ . '/../vendor/autoload.php'; $args = getopt('t:l:r:'); $t = isset($args['t']) ? (int)$args['t'] : 0; $loop = isset($args['l']) && class_exists('React\EventLoop\\' . $args['l'] . 'Loop') ? 'React\EventLoop\\' . $args['l'] . 'Loop' : Factory::create(); if (!($loop instanceof LoopInterface)) { $loop = new $loop(); } $r = isset($args['r']) ? (int)$args['r'] : 2; $runs = 0; if (5 < $t) { $loop->addTimer($t, function () use ($loop) { $loop->stop(); }); } $loop->addPeriodicTimer(0.001, function () use (&$runs, $loop) { $runs++; $loop->addPeriodicTimer(1, function (TimerInterface $timer) use ($loop) { $loop->cancelTimer($timer); }); }); $loop->addPeriodicTimer($r, function () use (&$runs) { $kmem = round(memory_get_usage() / 1024); $kmemReal = round(memory_get_usage(true) / 1024); echo "Runs:\t\t\t$runs\n"; echo "Memory (internal):\t$kmem KiB\n"; echo "Memory (real):\t\t$kmemReal KiB\n"; echo str_repeat('-', 50), "\n"; }); echo "PHP Version:\t\t", phpversion(), "\n"; echo "Loop\t\t\t", get_class($loop), "\n"; echo "Time\t\t\t", date('r'), "\n"; echo str_repeat('-', 50), "\n"; $beginTime = time(); $loop->run(); $endTime = time(); $timeTaken = $endTime - $beginTime; echo "PHP Version:\t\t", phpversion(), "\n"; echo "Loop\t\t\t", get_class($loop), "\n"; echo "Time\t\t\t", date('r'), "\n"; echo "Time taken\t\t", $timeTaken, " seconds\n"; echo "Runs per second\t\t", round($runs / $timeTaken), "\n";
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
01-timers.php | File | 239 B | 0644 |
|
02-periodic.php | File | 315 B | 0644 |
|
03-ticks.php | File | 222 B | 0644 |
|
04-signals.php | File | 504 B | 0644 |
|
11-consume-stdin.php | File | 787 B | 0644 |
|
12-generate-yes.php | File | 1.3 KB | 0644 |
|
13-http-client-blocking.php | File | 822 B | 0644 |
|
14-http-client-async.php | File | 1.76 KB | 0644 |
|
21-http-server.php | File | 1.04 KB | 0644 |
|
91-benchmark-ticks.php | File | 250 B | 0644 |
|
92-benchmark-timers.php | File | 251 B | 0644 |
|
93-benchmark-ticks-delay.php | File | 396 B | 0644 |
|
94-benchmark-timers-delay.php | File | 396 B | 0644 |
|
95-benchmark-memory.php | File | 1.85 KB | 0644 |
|