什么被认为是一个长的执行时间?

时间:2010-03-14 19:44:23

标签: php performance execution-time

我试图找出服务器端代码的效率。

使用microtime(true)来衡量速度,我可以计算出我的脚本运行所花费的时间。

我的平均速度为.3.5秒。这些脚本执行许多数据库查询以向用户返回不同的值。

什么被认为是将在网上为网站运行的PHP脚本的有效执行时间?

我知道这完全取决于正在做什么,但只需将其视为从数据库读取并将值返回给用户的标准脚本。我看看谷歌并看到他们在.15秒内搜索互联网,我觉得我的脚本是垃圾。

13 个答案:

答案 0 :(得分:8)

YouTube的目标网页呈现时间是< 100毫秒(Video here @ 7:00)。

您的瓶颈可能是数据库查询 - 尝试使用

EXPLAIN select * from x...

查看是否可以添加可加快查询速度的索引。

编辑上面的链接已经死亡。高可扩展性在YouTube上使用该视频作为主要来源,因此可能会引起一些兴趣:http://highscalability.com/youtube-architecture

答案 1 :(得分:3)

对我来说似乎有点高。

作为参考,我创建的框架的执行时间低至.0028,高达.0340秒。平均而言,每个页面通常有11到18个SQL查询。

但是,请记住,这是一个高度优化的框架,利用缓存,非常仔细的查询编码和自动加载。尝试实施这些策略,你应该看到一个很大的改进。

答案 2 :(得分:2)

使用PHP,大多数网站的生成速度都很快,最大的延迟是页面呈现,包括所有子请求,例如要显示的图像。
但访客的互联网连接速度和质量,他的电脑和软件也是重要因素。

慷慨,让我们说PHP占总负载的20%&渲染网页的时间 而且,我知道这个百分比非常近似,但更多的是一个说明性的例子。

平均页面加载时间约为3秒。 (太多了) 优质网站应该需要大约1秒才能完全加载,因此PHP将被允许200ms(1秒的20%)来生成输出。 因此,对于“普通”网站,php可能需要长达600毫秒。

注意:可以通过更改主机或改进源代码来改善PHP执行时间。

答案 3 :(得分:2)

嗯......我不确定绝对值在这里是否公平。这真的取决于硬件...当我在本地开发时,我的开发者机器运行速度比执行器服务器慢5-10倍。 因此,如果我们采用绝对值,“可接受”范围将根据硬件而变化。

嗯,通常我会尝试将事情保持在100毫秒以下。如果服务器加载时间较长,我将跟踪执行情况并尝试找出问题所在。我必须说大多数时候,数据库(因此查询)是瓶颈。真正的工作非常重要。

答案 4 :(得分:2)

它需要更快吗?为什么?

如果答案是“是,因为它位于需求列表中”“因为它需要宝贵的服务器资源”,那么请尝试优化您的SQL查询。也许你需要添加索引......

否则,我认为你应该继续下一个任务。首先,它是有效的,第二,你说的是.3到.5秒。应该是fast enough for humans和机器。

答案 5 :(得分:1)

这当然是非常主观的,取决于网站等等。

但是,我会说,当一个页面开始花费的时间超过100毫秒时,这对用户来说是一个明显的延迟,而且可能“太长”了。如果这是一个可以合理预期即时加载的页面。如果页面是搜索页面,在大型数据库中进行全文搜索,情况当然是不同的。

答案 6 :(得分:1)

我会说减少10倍就可以了。 但查询次数并不重要。可以有20个,全部运行0.005秒。质量确实重要,而不是数量。 通过添加更多的微时间语句,查找最慢的部分然后对其进行优化来分析您的代码以确定最慢的部分。

如果你有自己的查询mysql函数,那么放置microtime东西就会非常方便

答案 7 :(得分:1)

取决于所述,但另外考虑一下:在一秒钟的执行时间内,您将能够在一台CPU的服务器机器上每秒只有一个请求(在理想条件下)并且没有其他任何内容发生在那台机器上。如果您有超过每秒一个请求的请求,您将获得一个长队列,并且您的服务器将运行平稳,导致传入的请求需要更长的时间来处理。如果您获得的请求较少,则仍需要注意CPU利用率。如果服务器之前已经负载很重,那么您可能会遇到需要注意的问题。

可以使用数学方法(排队论)来分析容量需求,例如,请参阅PDQ(http://www.perfdynamics.com/Tools/PDQ.html)。

与谷歌相比可能不公平,因为他们必须拥有大量的传入请求,并且执行时间要长3倍,他们需要的服务器数量比现有服务器多出几倍......

答案 8 :(得分:1)

瞄准< 200毫秒。

人们越来越开始失去耐心等待> 200毫秒。

答案 9 :(得分:1)

这都是相对的,真的。不要指望与其他使用PHP的网站相提并论。请记住,PHP需要在每个页面加载时从头开始加载所有内容。

您真的想看看您的网站在加载时的效果,例如使用Apache ab进行测试。如果您的网站可以处理您所期望的最高流量级别,那么您不再需要对其进行优化。用户无法判断您的页面是否在.75秒或.25秒内加载。

请记住,调用microtime本身会增加页面加载的时间,因为它必须调用操作系统(上下文切换)。优化页面可能更有价值,使其更小,以便更快地通过网络,并在客户端上呈现更快。

答案 10 :(得分:1)

我注意到,作为Wikipedia上的编辑,我们不会看到投诉,直到页面加载启动超过大约5到10秒。当然,报告这种缓慢的机制对大多数用户来说都是模糊不清的。

对于我自己 - 作为旅游网站的用户 - 我对中间屏幕充满了安慰,该屏幕上写着“得到了您的请求。它正在处理。它可能需要 X 秒。”

答案 11 :(得分:0)

  • 我不会将您的脚本与Google进行比较,除非您保持类似的网页排名等。

  • 如果搜索仅从数据库中检索值,则速度可能会提高一些 分析应用程序并消除瓶颈(提到一些 - 页面上的脚本,大图像,大表,数据库索引)

答案 12 :(得分:0)

我已经制作了一个WP网站,该网站的页面之一上运行着相当繁重的搜索和汇总统计信息收集过程。

各个PHP模块从数据库中大约获取 500条记录,然后解码每个请求数据库的 10个不同的自定义字段的详细信息,以汇总所有必需的补充内容前端的数据。

然后,它仅返回一页数据(例如20项)和统计信息(另外10项)。

查看我的Chrome开发工具的时间

  • 我的本地开发者计算机需要大约0.9-1.1秒的TTFB 来启动每个上述的后端过程的XHR请求。
  • 要在同一页面上很好地共享托管,真正的Web服务器需要 TTFB的时间为0.3-0.6秒

显然,这并不是一个干净的数据库性能指标,Apache和PHP <-> MySQL妨碍了时间的安排,但作为参考,它可以很好地使用。没有SSL握手等。此处显示了连接开销。只是服务器准备数据并做出响应所花的时间,没有页面重新加载以及它是XHR请求。

如果在高峰时段所质疑的网站在高峰时段内每小时有 100位访问者访问同一DB繁重的页面,则该网站每分钟只有〜2个用户 >,因此,根据您的0.5秒/访问者请求,您可以服务每分钟60个访问者,并将其称为瓶颈。显然,在这种假想的情况下,备用性能是巨大的。