编写一个PHP脚本,在垂直行中生成数字1到10

Muh*_*sir 2 php optimization

我最近在一家公司接受了采访,他们问我以下问题:

"如果服务器/站点优化是最重要的,请编写一个PHP脚本,在垂直行生成数字1到10 - IE - 1,然后是换行符,然后是2,然后是换行符等."

虽然我可以用很多方式编写这个程序,但我认为它们中的任何一个在服务器负载和性能方面都不比其他程序好.例如:

for ($i = 1; $i <= 10; $i++) {
    echo $i . '<br />';
}
Run Code Online (Sandbox Code Playgroud)

所以我在这里有两个问题:

  1. 我们真的可以优化此代码的性能吗?
  2. 如果有,怎么样?如果没有,如何回答这个问题?

Joe*_*ams 5

希望这是一个棘手的问题.在我看来,正确的反应是问:"印刷这一点文字真的是我们的瓶颈吗?" 如果对应用程序的整体速度产生的影响可以忽略不计,那么花时间做得更快就会浪费时间.

另一方面,亚当在他的回答中提出了一个非常好的观点.编码完成后,很难解决一些瓶颈问题.

然而,以下应该更快,主要是因为它减少了解释器开销:

echo "1<br/>2<br/>3<br/>4<br/>5<br/>6<br/>7<br/>8<br/>9<br/>10<br/>";
Run Code Online (Sandbox Code Playgroud)

  • 或者你把字符串拉到`<?php ...?>`标签之外 (4认同)

Ada*_*onR 5

在尝试编写高效代码时,我尝试从项目开始就遵循一般做法.

在您提到的示例中,我尝试避免重复调用echo,因为您可以通过构建要呈现的代码然后在一次调用中回显它来实现显着的性能增强.例如:

for ($i = 1, $string = ''; $i <= 10; $i++) {
    s .= $i.'<br />';
}

echo $string;
Run Code Online (Sandbox Code Playgroud)

当然,在这个例子中它几乎没有什么区别,但是如果你从一个项目开始就没有遵循这种类型的简单约定,那么你将需要进行大规模的重构,而不是从一开始就做到这一点.