下面代码的执行时间比不加这些判断直接echo $rw['lastdate'];运行时间足足多了1毫秒,在加了下面那此判断后页面在执行时我明显有顿的感觉(执行时间长)我反复测试了,加了下面代码平均执行时间在0.003秒,不加直接echo $rw['lastdate'];
平均执行时间在0.002秒,希望能把下面代码优化,并详细解释下面代码执行效率低的原因,即相关原理,谢谢!$CurrentTime=getdate(); //取得当前时间数组
$OldTime=strtotime($rw['lastdate']); //取得存在数据库中时间的Unix时间戳
$TimeDifference=$CurrentTime[0]+(8*3600)-$OldTime;//把当前时间的Unix时间戳减去存在数据库中时间的Unix时间戳
if($TimeDifference<60) //如果Unix时间戳小于60秒就显示多少秒前发布的 {
echo floor($TimeDifference)."秒前";
}
elseif($TimeDifference<3600&&$TimeDifference>=60) //如果Unix时间戳大于60秒小于3600秒就显示多少分钟前发布
{
$min=$TimeDifference/60; //时间戳差除以60得到多少分钟前
echo floor($min)."分钟前";
}else //否则按存在数据库中的格式显示时间
{
echo $rw['lastdate'];
}
平均执行时间在0.002秒,希望能把下面代码优化,并详细解释下面代码执行效率低的原因,即相关原理,谢谢!$CurrentTime=getdate(); //取得当前时间数组
$OldTime=strtotime($rw['lastdate']); //取得存在数据库中时间的Unix时间戳
$TimeDifference=$CurrentTime[0]+(8*3600)-$OldTime;//把当前时间的Unix时间戳减去存在数据库中时间的Unix时间戳
if($TimeDifference<60) //如果Unix时间戳小于60秒就显示多少秒前发布的 {
echo floor($TimeDifference)."秒前";
}
elseif($TimeDifference<3600&&$TimeDifference>=60) //如果Unix时间戳大于60秒小于3600秒就显示多少分钟前发布
{
$min=$TimeDifference/60; //时间戳差除以60得到多少分钟前
echo floor($min)."分钟前";
}else //否则按存在数据库中的格式显示时间
{
echo $rw['lastdate'];
}
echo 包括其他输出函数在没有打开缓存的情况下要先检查用户是否在线(不在线就退出了)
这是一件比较耗时的工作
计算总要消耗性能的,,,没必要纠结1毫秒优化一个SQL语句,复杂业务逻辑更重要
感觉你的测试并不严密,用apache ab或其它的压力测试工具得出的才算是接近平均水平
就是发出本轮http请求的浏览器或其他设备检查用户是否在线 就是 检查本轮 http 会话是否已经提前结束了