ganglio/memoizer

简单的PHP Memoizer类

v1.0.4.2 2016-03-02 11:15 UTC

This package is not auto-updated.

Last update: 2024-09-14 18:04:23 UTC


README

简单的PHP Memoizer类

Latest Stable Version Build Status codecov.io Code Climate Scrutinizer Code Quality License

该类允许封装任何可调用对象,使得在第一次调用(带有一组给定的参数)时,可调用对象将被执行,并存储返回值。在随后的每次调用(使用相同的参数集)中,将使用存储的值而不是再次调用可调用对象。

示例

这是一个简单的示例,带有时间变化的调用,仅用于展示记忆化函数的工作方式。如果你的可调用对象具有这种行为,那么记忆化可能不是一个好主意: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);