Skip to content

Instantly share code, notes, and snippets.

@aohorodnyk
Last active August 29, 2015 14:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save aohorodnyk/c3c1011afa4ddc3d0365 to your computer and use it in GitHub Desktop.
Save aohorodnyk/c3c1011afa4ddc3d0365 to your computer and use it in GitHub Desktop.
executed command: `$ php test.php 100 10000000 > result.txt`
<?php
class A1{}
class A2{}
class A3{}
class A4{}
class A5{}
class A6{}
class A7{}
class A8{}
class A9{}
class PhpClass
{
/**
* @var A1
*/
private $a1;
/**
* @var A2
*/
private $a2;
/**
* @var A3
*/
private $a3;
/**
* @var A4
*/
private $a4;
/**
* @var A5
*/
private $a5;
/**
* @var A6
*/
private $a6;
/**
* @var A7
*/
private $a7;
/**
* @var A8
*/
private $a8;
/**
* @var A9
*/
private $a9;
/**
* @param A1 $a1
* @param A2 $a2
* @param A3 $a3
* @param A4 $a4
* @param A5 $a5
* @param A6 $a6
* @param A7 $a7
* @param A8 $a8
* @param A9 $a9
*/
public function __construct(\A1 $a1, \A2 $a2, \A3 $a3, \A4 $a4, \A5 $a5, \A6 $a6, \A7 $a7, \A8 $a8, \A9 $a9)
{
$this->a1 = $a1;
$this->a2 = $a2;
$this->a3 = $a3;
$this->a4 = $a4;
$this->a5 = $a5;
$this->a6 = $a6;
$this->a7 = $a7;
$this->a8 = $a8;
$this->a9 = $a9;
}
}
<?php
require_once __DIR__ . '/classes.php';
$instances = [];
for ($i = 1; $i <= 9; $i++) {
$className = "\A{$i}";
$instances[] = new $className();
}
<?php
require_once __DIR__ . '/dependencies.php';
$startTime = microtime(true);
$className = '\PhpClass';
for ($i = 0; $i < $argv[1]; $i++) {
new $className(
$instances[0],
$instances[1],
$instances[2],
$instances[3],
$instances[4],
$instances[5],
$instances[6],
$instances[7],
$instances[8]
);
}
echo microtime(true) - $startTime;
<?php
require_once __DIR__ . '/dependencies.php';
function createObject($className, $instances)
{
new $className(
$instances[0],
$instances[1],
$instances[2],
$instances[3],
$instances[4],
$instances[5],
$instances[6],
$instances[7],
$instances[8]
);
}
$startTime = microtime(true);
$className = '\PhpClass';
for ($i = 0; $i < $argv[1]; $i++) {
createObject($className, $instances);
}
echo microtime(true) - $startTime;
<?php
require_once __DIR__ . '/dependencies.php';
$startTime = microtime(true);
$className = '\PhpClass';
for ($i = 0; $i < $argv[1]; $i++) {
new $className(...$instances);
}
echo microtime(true) - $startTime;
<?php
require_once __DIR__ . '/dependencies.php';
function createObject($className, array $instances)
{
new $className(...$instances);
}
$startTime = microtime(true);
$className = '\PhpClass';
for ($i = 0; $i < $argv[1]; $i++) {
createObject($className, $instances);
}
echo microtime(true) - $startTime;
<?php
require_once __DIR__ . '/dependencies.php';
$startTime = microtime(true);
$className = '\PhpClass';
for ($i = 0; $i < $argv[1]; $i++) {
switch (count($instances)) {
case 5:
new $className($instances[0], $instances[1], $instances[2], $instances[3], $instances[4]);
break;
case 6:
new $className($instances[0], $instances[1], $instances[2], $instances[3], $instances[4], $instances[5]);
break;
case 7:
new $className($instances[0], $instances[1], $instances[2], $instances[3], $instances[4], $instances[5], $instances[6]);
break;
case 8:
new $className($instances[0], $instances[1], $instances[2], $instances[3], $instances[4], $instances[5], $instances[6], $instances[7]);
break;
case 9:
new $className(
$instances[0], $instances[1], $instances[2], $instances[3], $instances[4], $instances[5], $instances[6], $instances[7], $instances[8]
);
break;
default:
$reflection = new \ReflectionClass($className);
$reflection->newInstanceArgs($instances);
}
}
echo microtime(true) - $startTime;
<?php
require_once __DIR__ . '/dependencies.php';
function createObject($className, array $instances) {
switch (count($instances)) {
case 5:
new $className($instances[0], $instances[1], $instances[2], $instances[3], $instances[4]);
break;
case 6:
new $className($instances[0], $instances[1], $instances[2], $instances[3], $instances[4], $instances[5]);
break;
case 7:
new $className($instances[0], $instances[1], $instances[2], $instances[3], $instances[4], $instances[5], $instances[6]);
break;
case 8:
new $className($instances[0], $instances[1], $instances[2], $instances[3], $instances[4], $instances[5], $instances[6], $instances[7]);
break;
case 9:
new $className(
$instances[0], $instances[1], $instances[2], $instances[3], $instances[4], $instances[5], $instances[6], $instances[7], $instances[8]
);
break;
default:
$reflection = new \ReflectionClass($className);
$reflection->newInstanceArgs($instances);
}
}
$startTime = microtime(true);
$className = '\PhpClass';
for ($i = 0; $i < $argv[1]; $i++) {
createObject($className, $instances);
}
echo microtime(true) - $startTime;
<?php
require_once __DIR__ . '/dependencies.php';
$startTime = microtime(true);
$className = '\PhpClass';
for ($i = 0; $i < $argv[1]; $i++) {
switch (count($instances)) {
case 1:
new $className($instances[0]);
break;
case 2:
new $className($instances[0], $instances[1]);
break;
case 3:
new $className($instances[0], $instances[1], $instances[2]);
break;
case 4:
new $className($instances[0], $instances[1], $instances[2], $instances[3]);
break;
case 5:
new $className($instances[0], $instances[1], $instances[2], $instances[3], $instances[4]);
break;
case 6:
new $className($instances[0], $instances[1], $instances[2], $instances[3], $instances[4], $instances[5]);
break;
case 7:
new $className($instances[0], $instances[1], $instances[2], $instances[3], $instances[4], $instances[5], $instances[6]);
break;
case 8:
new $className($instances[0], $instances[1], $instances[2], $instances[3], $instances[4], $instances[5], $instances[6], $instances[7]);
break;
case 9:
new $className(
$instances[0], $instances[1], $instances[2], $instances[3], $instances[4], $instances[5], $instances[6], $instances[7], $instances[8]
);
break;
case 10:
new $className(
$instances[0], $instances[1], $instances[2], $instances[3], $instances[4], $instances[5], $instances[6], $instances[7], $instances[8], $instances[9]
);
break;
case 11:
new $className(
$instances[0],
$instances[1],
$instances[2],
$instances[3],
$instances[4],
$instances[5],
$instances[6],
$instances[7],
$instances[8],
$instances[9],
$instances[10]
);
break;
case 12:
new $className(
$instances[0],
$instances[1],
$instances[2],
$instances[3],
$instances[4],
$instances[5],
$instances[6],
$instances[7],
$instances[8],
$instances[9],
$instances[10],
$instances[11]
);
break;
case 13:
new $className(
$instances[0],
$instances[1],
$instances[2],
$instances[3],
$instances[4],
$instances[5],
$instances[6],
$instances[7],
$instances[8],
$instances[9],
$instances[10],
$instances[11],
$instances[12]
);
break;
case 14:
new $className(
$instances[0],
$instances[1],
$instances[2],
$instances[3],
$instances[4],
$instances[5],
$instances[6],
$instances[7],
$instances[8],
$instances[9],
$instances[10],
$instances[11],
$instances[12],
$instances[13]
);
break;
case 15:
new $className(
$instances[0],
$instances[1],
$instances[2],
$instances[3],
$instances[4],
$instances[5],
$instances[6],
$instances[7],
$instances[8],
$instances[9],
$instances[10],
$instances[11],
$instances[12],
$instances[13],
$instances[14]
);
break;
default:
$reflection = new \ReflectionClass($className);
$reflection->newInstanceArgs($instances);
}
}
echo microtime(true) - $startTime;
<?php
require_once __DIR__ . '/dependencies.php';
function createObject($className, array $instances) {
switch (count($instances)) {
case 1:
new $className($instances[0]);
break;
case 2:
new $className($instances[0], $instances[1]);
break;
case 3:
new $className($instances[0], $instances[1], $instances[2]);
break;
case 4:
new $className($instances[0], $instances[1], $instances[2], $instances[3]);
break;
case 5:
new $className($instances[0], $instances[1], $instances[2], $instances[3], $instances[4]);
break;
case 6:
new $className($instances[0], $instances[1], $instances[2], $instances[3], $instances[4], $instances[5]);
break;
case 7:
new $className($instances[0], $instances[1], $instances[2], $instances[3], $instances[4], $instances[5], $instances[6]);
break;
case 8:
new $className($instances[0], $instances[1], $instances[2], $instances[3], $instances[4], $instances[5], $instances[6], $instances[7]);
break;
case 9:
new $className(
$instances[0], $instances[1], $instances[2], $instances[3], $instances[4], $instances[5], $instances[6], $instances[7], $instances[8]
);
break;
case 10:
new $className(
$instances[0], $instances[1], $instances[2], $instances[3], $instances[4], $instances[5], $instances[6], $instances[7], $instances[8], $instances[9]
);
break;
case 11:
new $className(
$instances[0],
$instances[1],
$instances[2],
$instances[3],
$instances[4],
$instances[5],
$instances[6],
$instances[7],
$instances[8],
$instances[9],
$instances[10]
);
break;
case 12:
new $className(
$instances[0],
$instances[1],
$instances[2],
$instances[3],
$instances[4],
$instances[5],
$instances[6],
$instances[7],
$instances[8],
$instances[9],
$instances[10],
$instances[11]
);
break;
case 13:
new $className(
$instances[0],
$instances[1],
$instances[2],
$instances[3],
$instances[4],
$instances[5],
$instances[6],
$instances[7],
$instances[8],
$instances[9],
$instances[10],
$instances[11],
$instances[12]
);
break;
case 14:
new $className(
$instances[0],
$instances[1],
$instances[2],
$instances[3],
$instances[4],
$instances[5],
$instances[6],
$instances[7],
$instances[8],
$instances[9],
$instances[10],
$instances[11],
$instances[12],
$instances[13]
);
break;
case 15:
new $className(
$instances[0],
$instances[1],
$instances[2],
$instances[3],
$instances[4],
$instances[5],
$instances[6],
$instances[7],
$instances[8],
$instances[9],
$instances[10],
$instances[11],
$instances[12],
$instances[13],
$instances[14]
);
break;
default:
$reflection = new \ReflectionClass($className);
$reflection->newInstanceArgs($instances);
}
}
$startTime = microtime(true);
$className = '\PhpClass';
for ($i = 0; $i < $argv[1]; $i++) {
createObject($className, $instances);
}
echo microtime(true) - $startTime;
<?php
require_once __DIR__ . '/dependencies.php';
$startTime = microtime(true);
$className = '\PhpClass';
for ($i = 0; $i < $argv[1]; $i++) {
$reflection = new \ReflectionClass($className);
$reflection->newInstanceArgs($instances);
}
echo microtime(true) - $startTime;
<?php
require_once __DIR__ . '/dependencies.php';
function createObject($className, $instances) {
$reflection = new \ReflectionClass($className);
$reflection->newInstanceArgs($instances);
}
$startTime = microtime(true);
$className = '\PhpClass';
for ($i = 0; $i < $argv[1]; $i++) {
createObject($className, $instances);
}
echo microtime(true) - $startTime;
All results:
new: 0m23.567s, 0m22.184s, 0m22.930s, 0m22.033s, 0m23.271s, 0m30.521s, 0m22.811s, 0m22.439s, 0m23.409s, 0m21.890s, 0m24.503s, 0m23.557s, 0m23.615s, 0m24.139s, 0m22.463s, 0m23.430s, 0m23.817s, 0m25.004s, 0m23.363s, 0m22.204s, 0m23.517s, 0m24.305s, 0m24.607s, 0m24.654s, 0m21.859s, 0m24.714s, 0m25.887s, 0m22.940s, 0m26.433s, 0m24.507s, 0m26.479s, 0m26.752s, 0m24.675s, 0m24.451s, 0m22.610s, 0m23.549s, 0m26.411s, 0m24.667s, 0m23.419s, 0m22.524s, 0m23.507s, 0m23.825s, 0m22.905s, 0m22.918s, 0m23.049s, 0m24.831s, 0m23.319s, 0m27.591s, 0m24.104s, 0m26.784s, 0m22.311s, 0m24.583s, 0m22.714s, 0m25.247s, 0m23.724s, 0m23.528s, 0m22.491s, 0m22.842s, 0m23.368s, 0m23.817s, 0m23.125s, 0m22.933s, 0m23.786s, 0m23.223s, 0m24.372s, 0m26.030s, 0m22.769s, 0m24.796s, 0m23.759s, 0m26.581s, 0m25.014s, 0m24.175s, 0m23.711s, 0m24.802s, 0m24.667s, 0m23.220s, 0m23.307s, 0m22.722s, 0m24.103s, 0m25.049s, 0m23.328s, 0m22.987s, 0m24.116s, 0m26.804s, 0m22.556s, 0m22.825s, 0m25.009s, 0m24.148s, 0m24.243s, 0m24.588s, 0m30.962s, 0m23.648s, 0m24.072s, 0m24.477s, 0m23.787s, 0m22.924s, 0m22.889s, 0m24.074s, 0m22.424s, 0m23.470s
new_function: 0m24.533s, 0m23.326s, 0m25.541s, 0m23.297s, 0m26.556s, 0m28.294s, 0m24.261s, 0m25.502s, 0m25.602s, 0m23.770s, 0m25.882s, 0m26.213s, 0m25.516s, 0m24.883s, 0m27.274s, 0m25.495s, 0m24.320s, 0m24.156s, 0m24.490s, 0m23.973s, 0m24.390s, 0m32.453s, 0m27.069s, 0m26.916s, 0m24.148s, 0m27.225s, 0m24.816s, 0m24.969s, 0m27.026s, 0m28.123s, 0m27.038s, 0m28.591s, 0m24.219s, 0m28.916s, 0m25.622s, 0m25.489s, 0m26.050s, 0m26.858s, 0m25.264s, 0m25.956s, 0m27.397s, 0m24.911s, 0m24.370s, 0m24.662s, 0m26.951s, 0m24.433s, 0m26.318s, 0m25.568s, 0m24.248s, 0m26.319s, 0m25.244s, 0m30.228s, 0m26.176s, 0m25.873s, 0m24.733s, 0m25.865s, 0m24.251s, 0m25.536s, 0m24.906s, 0m24.567s, 0m26.107s, 0m25.773s, 0m25.105s, 0m26.757s, 0m24.390s, 0m25.148s, 0m26.909s, 0m25.931s, 0m25.084s, 0m26.881s, 0m26.595s, 0m27.423s, 0m25.849s, 0m27.660s, 0m26.024s, 0m24.565s, 0m24.160s, 0m25.350s, 0m25.466s, 0m24.050s, 0m24.895s, 0m27.569s, 0m26.339s, 0m25.960s, 0m25.908s, 0m24.758s, 0m25.033s, 0m27.470s, 0m26.045s, 0m28.758s, 0m32.008s, 0m25.131s, 0m26.629s, 0m26.236s, 0m25.753s, 0m25.107s, 0m24.368s, 0m24.538s, 0m24.486s, 0m23.815s
new_splat: 0m21.488s, 0m20.870s, 0m20.720s, 0m20.756s, 0m23.086s, 0m27.731s, 0m21.110s, 0m20.170s, 0m22.511s, 0m20.250s, 0m21.497s, 0m22.891s, 0m22.112s, 0m21.733s, 0m22.976s, 0m21.825s, 0m20.496s, 0m20.867s, 0m21.078s, 0m20.648s, 0m21.796s, 0m21.888s, 0m21.474s, 0m22.246s, 0m20.306s, 0m21.884s, 0m22.091s, 0m21.730s, 0m23.264s, 0m22.144s, 0m23.100s, 0m23.861s, 0m21.956s, 0m22.176s, 0m22.487s, 0m21.712s, 0m22.824s, 0m21.237s, 0m22.564s, 0m23.084s, 0m21.618s, 0m23.364s, 0m21.587s, 0m22.823s, 0m22.791s, 0m21.776s, 0m22.308s, 0m22.944s, 0m21.051s, 0m21.248s, 0m27.466s, 0m22.781s, 0m21.604s, 0m22.638s, 0m22.856s, 0m21.735s, 0m22.789s, 0m21.335s, 0m20.766s, 0m21.771s, 0m22.288s, 0m20.846s, 0m21.415s, 0m23.612s, 0m20.852s, 0m21.854s, 0m20.902s, 0m24.406s, 0m21.295s, 0m22.051s, 0m21.244s, 0m22.511s, 0m22.190s, 0m22.329s, 0m23.734s, 0m21.029s, 0m22.361s, 0m22.330s, 0m21.177s, 0m21.002s, 0m23.035s, 0m21.864s, 0m21.669s, 0m23.831s, 0m22.747s, 0m21.209s, 0m21.967s, 0m23.816s, 0m22.716s, 0m27.450s, 0m28.842s, 0m21.536s, 0m21.449s, 0m21.643s, 0m22.139s, 0m21.444s, 0m20.311s, 0m21.452s, 0m20.716s, 0m20.241s
new_splat_function: 0m24.005s, 0m22.831s, 0m22.996s, 0m22.392s, 0m25.621s, 0m26.906s, 0m22.883s, 0m22.881s, 0m23.093s, 0m22.457s, 0m23.961s, 0m23.260s, 0m23.443s, 0m22.037s, 0m24.186s, 0m26.869s, 0m23.226s, 0m22.408s, 0m23.527s, 0m22.890s, 0m23.467s, 0m26.105s, 0m22.413s, 0m24.045s, 0m22.524s, 0m23.328s, 0m24.526s, 0m23.438s, 0m27.063s, 0m25.531s, 0m23.348s, 0m24.365s, 0m24.836s, 0m23.816s, 0m24.188s, 0m24.201s, 0m23.856s, 0m23.207s, 0m24.122s, 0m24.134s, 0m23.530s, 0m23.974s, 0m24.450s, 0m23.286s, 0m24.830s, 0m23.357s, 0m24.472s, 0m32.704s, 0m23.443s, 0m22.706s, 0m22.703s, 0m23.624s, 0m24.090s, 0m24.605s, 0m22.613s, 0m23.023s, 0m23.634s, 0m23.276s, 0m25.102s, 0m23.455s, 0m24.251s, 0m24.388s, 0m24.134s, 0m24.435s, 0m23.274s, 0m24.241s, 0m22.848s, 0m24.280s, 0m23.834s, 0m23.910s, 0m23.976s, 0m23.271s, 0m26.331s, 0m25.218s, 0m24.086s, 0m24.496s, 0m23.839s, 0m25.669s, 0m23.444s, 0m24.091s, 0m24.449s, 0m24.061s, 0m24.145s, 0m23.765s, 0m24.856s, 0m23.630s, 0m22.701s, 0m23.903s, 0m22.833s, 0m25.825s, 0m27.641s, 0m22.971s, 0m23.782s, 0m23.749s, 0m23.199s, 0m22.572s, 0m23.095s, 0m26.039s, 0m23.649s, 0m23.059s
new_switch_small: 0m27.615s, 0m26.093s, 0m26.062s, 0m25.236s, 0m27.130s, 0m31.788s, 0m27.440s, 0m26.382s, 0m25.909s, 0m25.480s, 0m29.479s, 0m26.618s, 0m27.613s, 0m24.885s, 0m26.530s, 0m32.933s, 0m27.512s, 0m25.496s, 0m26.032s, 0m26.351s, 0m26.079s, 0m26.580s, 0m28.477s, 0m26.629s, 0m26.398s, 0m25.859s, 0m26.171s, 0m27.560s, 0m28.682s, 0m29.356s, 0m26.818s, 0m28.279s, 0m27.492s, 0m27.476s, 0m28.409s, 0m27.451s, 0m28.315s, 0m27.337s, 0m27.358s, 0m26.959s, 0m26.293s, 0m26.255s, 0m25.917s, 0m25.131s, 0m27.109s, 0m26.318s, 0m26.326s, 0m28.300s, 0m25.813s, 0m26.530s, 0m27.019s, 0m27.895s, 0m26.758s, 0m28.073s, 0m25.701s, 0m27.137s, 0m27.228s, 0m25.627s, 0m26.434s, 0m26.243s, 0m26.177s, 0m26.309s, 0m27.816s, 0m28.631s, 0m26.235s, 0m26.697s, 0m31.492s, 0m26.861s, 0m26.572s, 0m26.761s, 0m27.163s, 0m27.343s, 0m28.383s, 0m30.059s, 0m26.626s, 0m27.086s, 0m27.548s, 0m26.240s, 0m26.342s, 0m26.624s, 0m27.356s, 0m27.540s, 0m27.344s, 0m28.757s, 0m30.571s, 0m25.444s, 0m25.990s, 0m26.951s, 0m26.917s, 0m28.945s, 0m32.956s, 0m25.733s, 0m27.285s, 0m25.335s, 0m26.326s, 0m25.279s, 0m26.369s, 0m26.158s, 0m25.849s, 0m26.594s
new_switch_small_function: 0m27.463s, 0m27.447s, 0m26.576s, 0m27.004s, 0m29.229s, 0m37.621s, 0m29.038s, 0m30.083s, 0m27.291s, 0m27.536s, 0m28.812s, 0m28.781s, 0m28.530s, 0m29.811s, 0m28.324s, 0m34.820s, 0m28.122s, 0m27.154s, 0m28.800s, 0m29.468s, 0m28.493s, 0m28.641s, 0m28.446s, 0m30.082s, 0m28.419s, 0m27.744s, 0m27.210s, 0m29.317s, 0m31.233s, 0m31.011s, 0m28.055s, 0m30.261s, 0m31.859s, 0m30.677s, 0m28.397s, 0m30.047s, 0m28.865s, 0m28.996s, 0m30.676s, 0m28.709s, 0m28.188s, 0m27.367s, 0m27.741s, 0m27.921s, 0m28.895s, 0m28.228s, 0m31.042s, 0m28.975s, 0m27.633s, 0m29.360s, 0m28.316s, 0m29.399s, 0m29.310s, 0m30.080s, 0m28.272s, 0m31.732s, 0m29.186s, 0m28.714s, 0m28.734s, 0m28.084s, 0m28.580s, 0m29.407s, 0m28.572s, 0m28.930s, 0m29.710s, 0m29.643s, 0m29.907s, 0m29.073s, 0m28.285s, 0m28.745s, 0m29.752s, 0m30.575s, 0m28.357s, 0m30.087s, 0m27.538s, 0m29.640s, 0m28.266s, 0m28.939s, 0m28.666s, 0m30.410s, 0m28.162s, 0m30.282s, 0m28.324s, 0m28.633s, 0m31.069s, 0m28.516s, 0m31.112s, 0m29.202s, 0m29.886s, 0m32.939s, 0m29.070s, 0m28.733s, 0m29.362s, 0m29.582s, 0m29.209s, 0m27.820s, 0m28.115s, 0m29.942s, 0m28.033s, 0m27.721s
new_switch_typical: 0m26.565s, 0m26.611s, 0m29.144s, 0m27.953s, 0m28.489s, 0m34.579s, 0m30.263s, 0m27.535s, 0m26.567s, 0m26.723s, 0m28.049s, 0m28.867s, 0m29.184s, 0m26.937s, 0m27.890s, 0m28.301s, 0m27.599s, 0m28.587s, 0m27.097s, 0m32.003s, 0m28.752s, 0m29.119s, 0m27.349s, 0m29.620s, 0m26.278s, 0m28.302s, 0m25.995s, 0m28.889s, 0m33.544s, 0m30.155s, 0m27.717s, 0m29.953s, 0m27.049s, 0m29.801s, 0m28.208s, 0m28.571s, 0m28.724s, 0m28.137s, 0m27.050s, 0m28.400s, 0m27.194s, 0m28.337s, 0m28.045s, 0m27.732s, 0m28.533s, 0m27.510s, 0m28.722s, 0m28.654s, 0m28.479s, 0m28.456s, 0m29.215s, 0m30.759s, 0m27.319s, 0m27.753s, 0m30.314s, 0m27.125s, 0m26.879s, 0m28.318s, 0m28.157s, 0m28.504s, 0m28.575s, 0m28.288s, 0m29.340s, 0m29.150s, 0m27.309s, 0m30.202s, 0m29.033s, 0m27.815s, 0m28.424s, 0m27.968s, 0m28.335s, 0m29.585s, 0m27.593s, 0m28.839s, 0m26.581s, 0m28.100s, 0m28.036s, 0m28.737s, 0m26.910s, 0m28.457s, 0m29.977s, 0m29.212s, 0m31.242s, 0m27.466s, 0m30.098s, 0m26.949s, 0m28.050s, 0m27.540s, 0m28.920s, 0m34.955s, 0m27.822s, 0m29.339s, 0m27.657s, 0m29.421s, 0m28.989s, 0m26.773s, 0m28.043s, 0m29.183s, 0m26.950s, 0m27.601s
new_switch_typical_function: 0m28.506s, 0m27.370s, 0m28.486s, 0m28.888s, 0m30.600s, 0m37.161s, 0m28.721s, 0m34.720s, 0m28.669s, 0m31.152s, 0m28.950s, 0m32.000s, 0m29.473s, 0m29.238s, 0m32.051s, 0m30.825s, 0m29.691s, 0m29.074s, 0m27.999s, 0m33.553s, 0m30.131s, 0m30.374s, 0m29.118s, 0m29.713s, 0m27.726s, 0m30.515s, 0m27.742s, 0m38.518s, 0m30.342s, 0m29.744s, 0m29.963s, 0m32.616s, 0m28.731s, 0m33.111s, 0m28.284s, 0m31.419s, 0m29.284s, 0m28.320s, 0m30.303s, 0m30.024s, 0m29.931s, 0m30.214s, 0m30.968s, 0m29.965s, 0m31.608s, 0m30.558s, 0m31.328s, 0m29.693s, 0m31.306s, 0m31.088s, 0m31.396s, 0m29.920s, 0m30.969s, 0m29.139s, 0m29.501s, 0m29.295s, 0m29.095s, 0m29.159s, 0m31.154s, 0m31.098s, 0m29.183s, 0m31.689s, 0m30.879s, 0m28.864s, 0m30.513s, 0m30.752s, 0m29.583s, 0m29.417s, 0m30.501s, 0m32.229s, 0m29.415s, 0m30.595s, 0m29.563s, 0m29.068s, 0m28.162s, 0m29.020s, 0m28.305s, 0m30.189s, 0m30.693s, 0m29.888s, 0m29.090s, 0m30.556s, 0m31.406s, 0m29.116s, 0m30.922s, 0m29.698s, 0m30.375s, 0m30.174s, 0m29.084s, 0m36.818s, 0m32.208s, 0m32.038s, 0m28.828s, 0m29.530s, 0m30.315s, 0m28.378s, 0m30.262s, 0m29.133s, 0m33.057s, 0m29.405s
reflection_newinstanceargs: 0m28.567s, 0m29.773s, 0m28.686s, 0m29.527s, 0m29.989s, 0m31.089s, 0m29.490s, 0m30.106s, 0m30.815s, 0m29.584s, 0m31.106s, 0m28.761s, 0m30.344s, 0m29.444s, 0m30.155s, 0m30.140s, 0m30.630s, 0m28.775s, 0m31.485s, 0m29.054s, 0m34.404s, 0m29.749s, 0m29.415s, 0m31.067s, 0m28.575s, 0m30.778s, 0m29.395s, 0m38.669s, 0m31.614s, 0m29.535s, 0m32.008s, 0m34.703s, 0m30.647s, 0m37.962s, 0m29.187s, 0m30.761s, 0m30.596s, 0m30.326s, 0m29.486s, 0m31.546s, 0m29.531s, 0m29.276s, 0m29.989s, 0m30.654s, 0m33.502s, 0m30.666s, 0m31.749s, 0m29.612s, 0m30.752s, 0m28.822s, 0m31.464s, 0m29.038s, 0m33.245s, 0m32.240s, 0m31.039s, 0m30.064s, 0m29.852s, 0m29.201s, 0m30.270s, 0m30.691s, 0m29.629s, 0m32.291s, 0m31.023s, 0m31.793s, 0m30.147s, 0m31.750s, 0m31.676s, 0m29.456s, 0m30.982s, 0m32.086s, 0m30.471s, 0m32.117s, 0m29.987s, 0m31.797s, 0m28.636s, 0m30.226s, 0m29.632s, 0m29.969s, 0m30.527s, 0m30.409s, 0m30.178s, 0m30.051s, 0m31.485s, 0m28.777s, 0m31.042s, 0m29.684s, 0m31.478s, 0m30.082s, 0m30.932s, 0m36.027s, 0m30.444s, 0m31.116s, 0m30.921s, 0m30.155s, 0m30.370s, 0m29.274s, 0m29.432s, 0m28.887s, 0m31.248s, 0m29.611s
reflection_newinstanceargs_function: 0m29.676s, 0m29.752s, 0m30.183s, 0m31.925s, 0m32.353s, 0m32.784s, 0m29.540s, 0m32.682s, 0m29.728s, 0m31.235s, 0m30.761s, 0m29.738s, 0m30.752s, 0m29.871s, 0m32.836s, 0m30.521s, 0m32.048s, 0m30.046s, 0m30.629s, 0m31.850s, 0m34.555s, 0m30.898s, 0m31.197s, 0m29.620s, 0m31.252s, 0m33.178s, 0m30.951s, 0m40.417s, 0m34.527s, 0m34.346s, 0m31.833s, 0m42.880s, 0m33.651s, 0m34.384s, 0m30.559s, 0m31.895s, 0m31.322s, 0m33.165s, 0m30.942s, 0m30.885s, 0m31.028s, 0m30.596s, 0m32.812s, 0m31.375s, 0m32.051s, 0m32.215s, 0m30.341s, 0m31.839s, 0m32.328s, 0m31.867s, 0m33.110s, 0m33.829s, 0m32.728s, 0m31.304s, 0m31.688s, 0m34.579s, 0m30.449s, 0m31.013s, 0m31.560s, 0m30.912s, 0m32.246s, 0m33.306s, 0m30.622s, 0m32.243s, 0m31.104s, 0m34.389s, 0m32.103s, 0m34.151s, 0m31.626s, 0m33.961s, 0m31.292s, 0m33.763s, 0m32.804s, 0m33.361s, 0m31.184s, 0m30.634s, 0m29.864s, 0m31.200s, 0m36.742s, 0m31.482s, 0m31.948s, 0m31.357s, 0m32.181s, 0m33.270s, 0m32.477s, 0m30.883s, 0m31.352s, 0m31.244s, 0m33.937s, 0m45.066s, 0m32.782s, 0m31.464s, 0m29.681s, 0m31.974s, 0m32.335s, 0m29.977s, 0m37.074s, 0m30.842s, 0m30.294s, 0m30.423s
Sum:
new: 40m3.048s
new_function: 43m2.605s
new_splat: 36m55.390s
new_splat_function: 40m1.203s
new_switch_small: 45m13.043s
new_switch_small_function: 48m35.017s
new_switch_typical: 47m30.023s
new_switch_typical_function: 50m29.390s
reflection_newinstanceargs: 51m5.401s
reflection_newinstanceargs_function: 53m37.627s
Average:
new: 0m24.030s
new_function: 0m25.826s
new_splat: 0m22.154s
new_splat_function: 0m24.012s
new_switch_small: 0m27.130s
new_switch_small_function: 0m29.150s
new_switch_typical: 0m28.500s
new_switch_typical_function: 0m30.294s
reflection_newinstanceargs: 0m30.654s
reflection_newinstanceargs_function: 0m32.176s
<?php
$files = [
'new',
'new_function',
'new_splat',
'new_splat_function',
'new_switch_small',
'new_switch_small_function',
'new_switch_typical',
'new_switch_typical_function',
'reflection_newinstanceargs',
'reflection_newinstanceargs_function'
];
$results = [];
for ($i = 1; $i <= $argv[1]; $i++) {
echo "Start execution number {$i} " . getNow() . PHP_EOL;
foreach ($files as $file) {
echo "Start execute {$file} " . getNow() . PHP_EOL;
$results[$file][] = shell_exec('php ' . __DIR__ . "/{$file}.php {$argv[2]}");
echo "Finish execute {$file} " . getNow() . PHP_EOL;
}
echo "Finish execution number {$i} " . getNow() . PHP_EOL . PHP_EOL;
}
echo "All results: \n";
foreach ($results as $keyResults => $result) {
$times = [];
foreach ($result as $keyResult => $time) {
$times[] = convertToString($time);
}
echo "$keyResults: " . implode(', ', $times) . PHP_EOL;
}
echo "\nSum: \n";
foreach ($results as $keyResults => $result) {
echo "$keyResults: " . convertToString(array_sum($result)) . PHP_EOL;
}
echo "\nAverage: \n";
foreach ($results as $keyResults => $result) {
echo "$keyResults: " . convertToString(array_sum($result) / count($result)) . PHP_EOL;
}
function convertToMicrotime(array $timeList)
{
$convertedTimeList = [];
foreach ($timeList as $time) {
preg_match('/(\d+)m([\d\.]+)/u', $time, $matches);
$microtime = $matches[1] * 60 + $matches[2];
$convertedTimeList[] = $microtime;
}
return $convertedTimeList;
}
function convertToString($time)
{
$minutes = (int)(((int)$time) / 60);
$seconds = number_format($time - ($minutes * 60), 3);
return "{$minutes}m{$seconds}s";
}
function getNow()
{
return '(' . date('d.m.Y H:i:s') . ')';
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment