@ 2015-10-10T00:19:17Z <?php
class Operation
{
protected $routine;
protected $promise;
public function __construct(\Closure $routine, $promise)
{
$this->routine = $routine;
$this->promise = $promise;
}
public function run()
{
$routine = $this->routine();
$routine($this->promise);
}
public function getPromise()
{
return $this->promise;
}
}
class Promise
{
protected $successClosure;
protected $failClosure;
public function fulfill(...$args)
{
$closure = $this->successClosure;
$closure(...$args);
}
public function reject(...$args)
{
$closure = $this->failClosure;
$closure(...$args);
}
public function then(\Closure $success, \Closure $fail)
{
$this->successClosure = $success;
$this->failClosure = $fail;
}
}
class Queue
{
protected $queue = [];
public function append(Operation $operation) {
$this->queue[] = $operation;
}
public function getOperationGenerator()
{
foreach ($this->queue as $operation) {
yield $operation;
}
}
}
class QueueHandler
{
protected $queues = [];
public function addQueue($handle, Queue $queue)
{
$this->queues[$handle] = $queue;
}
public function getQueue($handle, $defualt=null)
{
return isset($this->queues[$handle]) ? $this->queues[$handle] : $default;
}
protected function getOperationGenerator()
{
$queues = [];
foreach ($this->queues as $queue) {
$queues[] = $queue->getOperationGenerator();
}
foreach ($queues as $queue) {
yeild from $queue;
}
}
protected function getRunGenerator()
{
$operation_generator = $this->getOperationGenerator();
foreach ($operation_generator as $operation) {
yield $operation;
}
}
public function run() {
$generator = $this->getRunGenerator();
foreach ($generator as $operation) {
$operation->run();
}
}
}
function addOperation(\Closure $routine, Queue $queue) {
$promise = new Promise();
$operation = new Operation($routine, $promise);
$queue->append($operation);
return $promise;
}
$queue_handler = new QueueHandler();
$queue_handler->addQueue('main', new Queue());
$queue_handler->addQueue('secondary', new Queue());
$runtime = function(Promise $promise) use ($queue_handler) {
$handle_request = function(Promise $promise) {
var_dump('handled request');
$promise->fulfill();
};
$request_promise = addOperation($handle_request, $queue_handler->getQueue('secondary'));
$request_promise->then(function() {
die('Regular shutdown');
}, function() {
die('Error!');
});
};
addOperation($runtime, $queue_handler->getQueue('main'));
$queue_handler->run();
Enable javascript to submit You have javascript disabled. You will not be able to edit any code.
Here you find the average performance (time & memory) of each version. A grayed out version indicates it didn't complete successfully (based on exit-code).
Version System time (s) User time (s) Memory (MiB) 5.6.14 0.007 0.083 18.19 5.6.13 0.013 0.077 18.20 5.6.12 0.007 0.047 20.89 5.6.11 0.020 0.077 21.04 5.6.10 0.007 0.063 21.02 5.6.9 0.013 0.063 21.12 5.6.8 0.010 0.077 20.38 5.5.30 0.007 0.053 17.98 5.5.29 0.003 0.047 17.94 5.5.28 0.003 0.077 20.89 5.5.27 0.003 0.057 20.94 5.5.26 0.013 0.073 20.73 5.5.25 0.003 0.083 20.47 5.5.24 0.003 0.063 20.20 5.4.45 0.013 0.063 19.43 5.4.44 0.027 0.067 19.55 5.4.43 0.023 0.073 19.26 5.4.42 0.023 0.073 19.55 5.4.41 0.017 0.073 19.44 5.4.40 0.040 0.033 19.11 5.4.39 0.020 0.060 18.94 5.4.38 0.020 0.053 19.11 5.4.37 0.017 0.060 18.94 5.4.36 0.023 0.057 19.26 5.4.35 0.020 0.053 19.26 5.4.34 0.067 0.073 18.94 5.4.32 0.023 0.053 18.92 5.4.31 0.033 0.043 18.94 5.4.30 0.020 0.050 18.95 5.4.29 0.030 0.050 19.23 5.4.28 0.013 0.060 19.01 5.4.27 0.023 0.053 19.05 5.4.26 0.027 0.050 19.10 5.4.25 0.023 0.053 18.83 5.4.24 0.027 0.050 19.25 5.4.23 0.027 0.053 19.09 5.4.22 0.033 0.050 19.23 5.4.21 0.023 0.057 18.93 5.4.20 0.030 0.063 19.10 5.4.19 0.023 0.060 19.24 5.4.18 0.027 0.053 19.25 5.4.17 0.027 0.050 19.22 5.4.16 0.023 0.053 19.04 5.4.15 0.020 0.073 19.08 5.4.14 0.030 0.047 16.74 5.4.13 0.017 0.053 16.37 5.4.12 0.023 0.050 16.60 5.4.11 0.027 0.047 16.63 5.4.10 0.040 0.053 16.54 5.4.9 0.013 0.057 16.54 5.4.8 0.017 0.063 16.29 5.4.7 0.023 0.073 16.49 5.4.6 0.013 0.063 16.54 5.4.5 0.003 0.043 16.17 5.4.4 0.017 0.053 16.33 5.4.3 0.030 0.050 16.48 5.4.2 0.023 0.043 16.53
preferences:dark mode live preview
142.27 ms | 1394 KiB | 7 Q