月度归档:2020年01月

存储PHP Array到Memcached和Redis中

优化代码的时候,需要增加这么一个逻辑,先从MC中取,取不到从Redis中取。通过Cron来更新MC和Redis中的内容。

简单看了下代码库中有封装好的方法,大致逻辑如下。

public static function set($key, $param, $value, $is_long = true)
{
	$mc = Comm_Mc::init();
	
	$mc->setData($key, $param, $value);
	$redis = Comm_Redis::init($is_long, true);
	$redis_key = self::$prefix . $key . '_' . implode('_', $param);
	$redis->set($redis_key, $value);
}

继续阅读

for循环关于对象长度优化思考

一、for循环对象长度两种写法

最近看到很多代码,各种语言,在写for循环的时候并没有把长度提取出来,而是每次遍历的时候进行计算。

$str = 'bye 2019, hi 2020!';
for ($i = 0; $i < strlen($str); $i++) {
    // do something
}

这种写法在初入行的时候,总是被教育性能低,要把长度提取出来。这个在诸多代码优化中总是排名榜首。

$str = 'bye 2019, hi 2020!';
$len = strlen($str);
for ($i = 0; $i < $len; $i++) {
    // do something
}

之前在大脑中空想,认为确实应该提取出来,省的每次遍历调用函数。最近正好有空,测试了以下,跟想象的差距很大。两种写法在数据量级小(小于10万)的时候,差异并不大。
继续阅读