ganglio / memoizer
简单的PHP Memoizer类
v1.0.4.2
2016-03-02 11:15 UTC
Requires
- php: >=5.4.0
Requires (Dev)
- phpunit/phpunit: 4.8.*
This package is not auto-updated.
Last update: 2024-09-14 18:04:23 UTC
README
简单的PHP Memoizer类
该类允许封装任何可调用对象,使得在第一次调用(带有一组给定的参数)时,可调用对象将被执行,并存储返回值。在随后的每次调用(使用相同的参数集)中,将使用存储的值而不是再次调用可调用对象。
示例
这是一个简单的示例,带有时间变化的调用,仅用于展示记忆化函数的工作方式。如果你的可调用对象具有这种行为,那么记忆化可能不是一个好主意:D
$myFunc = function ($a) { return $a * mt_rand(); } $myMemoizedFunc = new Memoizer($myFunc); echo "Returns: " . $myMemoizedFunc(3) . "\n"; echo "Returns the same value: " . $myMemoizedFunc(3) . "\n";
耗时较多的可调用对象可以通过存储返回值以提高后续调用的效率。
$mySlowFunc = function ($a) { sleep(5); return $a * mt_rand(); } $myMemoizedSlowFunc = new Memoizer($mySlowFunc); $st = time(); echo "Returns: " . $myMemoizedSlowFunc(3) . " in: " . (time() - $st); $st = time(); echo "Returns the same value: " . $myMemoizedSlowFunc(3) . " in basically 0 time: " . (time() - $st);