PHP Classes

File: vendor/react/event-loop/examples/95-benchmark-memory.php

Recommend this page to a friend!
  Classes of Hillary Kollan   Chatto PHP Websocket Chat System   vendor/react/event-loop/examples/95-benchmark-memory.php   Download  
File: vendor/react/event-loop/examples/95-benchmark-memory.php
Role: Example script
Content type: text/plain
Description: Example script
Class: Chatto PHP Websocket Chat System
Websocket based chat system using Ratchet library
Author: By
Last change:
Date: 3 years ago
Size: 1,898 bytes
 

Contents

Class file image Download
<?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";