PHP函数返回/打印速度

时间:2012-06-15 07:46:45

标签: php performance optimization

我的服务器上有一部分应用程序必须尽可能快地返回,现在需要0.5秒到1.8秒,这甚至不是计算的一部分。我的意思是(使用microtime)我已经计算了进程的每个部分,mysql调用和计算每次只需不到0.2秒,但返回和打印添加额外的秒。我能做些什么来尽可能快地做到这一点,因为现在这是慢得令人无法接受的?

我可以想到两件事:数据是在函数内部构建的,并且大数组作为值返回,因此简单地打印而不是返回可能更快。第二件事是我认为php打印缓冲区存在问题。当我分解文本时,我打印成更小的块,我看到每个块打印立即(~0.00002秒),除了一个将占用大约0.5-1.5秒的所有额外时间,这是我认为打印缓冲区已填满并且必须做一堆额外的工作。有没有什么办法解决这一问题?

一些细节:正在打印的文本大小约为150Kb,我没有使用flush或ob_函数,但我已经对它们进行了实验,这似乎没有什么区别,我没有使用memcached。我知道echo比print更快,因为它是一个语句而不是一个函数调用,但这有多大差异呢?由于打印将返回打印的文本,因此较大的文本在打印时需要更长的时间吗?

1 个答案:

答案 0 :(得分:2)

  

但是返回并打印添加额外的第二个

根据评论,这似乎很奇怪。鉴于应用程序的性质,我的想法是:

  

数据构建在函数内部,大数组作为值

返回

你为什么推迟这样的输出?大型数组是PHP中的一个重要性能问题(NB Dan Lee:数字和关联)。但最重要的是添加元素/引用单个元素 - 移动数组不是问题。

为什么不早点将数据发送到输出缓冲区?

  

我认为打印缓冲区已经填满

似乎不太可能。

  

我不使用ob_start和flush

然后这样做 - 优先使用gz处理程序。