我有点困惑,因为我的逻辑/程序员大脑说如果所有事情都是不变的,那么函数的速度必须是恒定的。
我正在开发一个PHP web应用程序,其中jqGrid作为显示数据的前端。我正在我的个人计算机上进行测试,因此网络流量不适用。我向PHP函数发出HTTP请求,它返回数据,然后jqGrid呈现它。令我感到困惑的是,有时,Firebug报告说有时需要300-600毫秒,有时需要3.68秒。我可以一遍又一遍地运行请求,响应时间非常不同。
查询是一样的。系统上的用户数相同。没有网络延迟。相同的代码。我在测试时没有在计算机上运行其他应用程序。我可以理解查询缓存提高后续请求的性能,但速度只是波动很大,没有押韵或理由。
所以,我的问题是,还有什么可以导致响应时间的这种变化?我怎样才能确定它在做什么?更重要的是,有没有办法让事情更加一致?
答案 0 :(得分:1)
您应该做的第一件事是分析您的代码(请参阅Simplest way to profile a PHP script)。这将显示您的瓶颈所在,然后您就可以找出响应时间波动的原因。
答案 1 :(得分:1)
如果您使用Apache Benchmarking tool(ab),您可以根据多次访问和多次并发访问获得一组统计信息,为您提供按连接分解的最小,平均,中位数和最大访问时间(以及stddev) ,处理和等待;和百分位...使它成为一个非常有用的工具,用于确定这是否真的是一个问题或失常。
虽然它无法诊断性能问题的原因,但它可以告诉您是否确实存在问题
答案 2 :(得分:0)
如果您使用Firebug来确定速度,则需要考虑Firefox和PHP都在缓存资源。特别是,PHP具有内置的操作码缓存,可以最大限度地减少后续运行时。这显示为第一个实例的长期运行,然后是刷新时的一些短期运行。我同意rfw深入分析。