PHP:一个大回声(或打印)VS许多小回声(或打印)

时间:2010-12-17 13:38:20

标签: php optimization

我应该echo一个包含1000行数据的表格,我可以echo一个字符串中的所有数据,还是每次最多echo行?

6 个答案:

答案 0 :(得分:12)

根据http://phplens.com/lens/php-book/optimizing-debugging-php.php(参见文章的后三分之一),您应该使用一个大的echo语句,并使用单引号而不是双引号,因此PHP不检查字符串中的变量。

简单的支持测试:

$bgn = microtime(true);
for ($i=0; $i<=1000; $i++)
{
  echo $i;
}
echo "\n", round(microtime(true)-$bgn, 4), "\n";
unset($bgn);
$bgn = microtime(true);
$b = '';
for ($i=0; $i<=1000; $i++)
{
  $b.=$i;
}
echo $b;
echo "\n", round(microtime(true)-$bgn, 4), "\n";
?>

首先运行返回0.0022,而第二次运行返回0.0007 ...但是这是一小组数据,内存使用量非常小。

答案 1 :(得分:5)

我会逐行回应。这样可以节省内存(在输出内存之前无需加载内存中的所有行)。

答案 2 :(得分:1)

每次回显行,使用较少的缓冲内存和较少的内存(您不需要使用变量来保存数据)

根据我针对所选答案进行的测试,显示相反的

答案 3 :(得分:1)

这是旧的,其中一些已经过时了,但您仍然应该阅读How Long Is a Piece of String?

尽管如此,除非你已经对其他所有内容进行了大量优化,否则echo不太可能成为你的瓶颈。

答案 4 :(得分:0)

这取决于你的目标。时间消耗通常不会出现问题,具体取决于字段数,因此此操作的使用情况也是如此(今天的内存足够大,只能导致1000行没有问题)。

我的感觉告诉我,为了进行修改,逐行回应它可能更实际,但我认为这根本不是什么大问题。做你喜欢的事。

答案 5 :(得分:0)

正如佩卡所说,没关系。以使代码最佳可读性的方式(最好使用模板,而不仅仅是在mysql fetch数组循环中使用lame echo)。

何时(如果有的话)它首先成为瓶颈 - 个人资料,然后进行优化。根据现实生活中的数字而不是谣言。

至于特定的1000行表 - 对它进行分页,很傻。只是分页。
让你的应用程序不要做无用的工作。这是优化的真正的秘密。