PHP code example of drupol / memoize
1. Go to this page and download the library: Download drupol/memoize library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
drupol / memoize example snippets
declare(strict_types=1);
namespace App;
Memoizer;
$fibonacci = static function (int $number) use (&$fibonacci): int {
return (1 >= $number) ?
$number :
$fibonacci($number - 1) + $fibonacci($number - 2);
};
$fibonacciMemoized = static function (int $number) use (&$fibonacciMemoized): int {
return (1 >= $number) ?
$number :
$fibonacciMemoized($number - 1) + $fibonacciMemoized($number - 2);
};
$fibonacciMemoized = Memoizer::fromClosure($fibonacciMemoized);
function bench(Closure $closure, ...$arguments): array
{
$eval = static function (Closure $closure, ...$arguments): Generator {
yield microtime(true);
yield $closure(...$arguments);
yield microtime(true);
};
$result = iterator_to_array($eval($closure, ...$arguments));
return [
$result[1],
$result[2] - $result[0],
];
}
var_dump(sprintf('[return: %s] [duration: %s]', ...bench($fibonacci, 30))); // ~3 seconds
var_dump(sprintf('[return: %s] [duration: %s]', ...bench($fibonacciMemoized, 30))); // ~0.0003 seconds