首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >编写一个PHP脚本,在垂直行中生成数字1到10

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

Stack Overflow用户
提问于 2011-08-05 04:24:14
回答 4查看 702关注 0票数 2

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

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

虽然我可以用很多方式编写这个程序,但我认为它们中没有一个在服务器负载和性能方面优于其他程序。例如:

代码语言:javascript
复制
for ($i = 1; $i <= 10; $i++) {
    echo $i . '<br />';
}

我有两个问题要问:

  1. 我们真的可以优化这段代码以提高性能吗?
  2. 如果是,怎么做?如果没有,如何回答这个问题?
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-08-05 14:54:42

因为服务器负载是最重要的,所以我想说最便宜的方法是以很少的CPU负载通过网络将最小的内容交付给用户。直接发送文本会导致类似大小的程序最轻的CPU负载,因此在本例中,我将使用类似于Joey的解决方案,尽管我会移除5个字符。此外,我还更新了Peter Taylor的建议使用Peter(48个字符- 40通过网络):

代码语言:javascript
复制
echo "<pre>1\n2\n3\n4\n5\n6\n7\n8\n9\n10</pre>";

在这种情况下,这样做更好,因为需求很短。但是,假设我们希望优化服务器的100个数字和行间隔。在这种情况下,如果您在PHP中计算它并通过互联网发送完整的结果,如果没有硬编码的话,这将是9 + 9*3 + 90*4 + 3 = 399字符加上计算的额外服务器开销。因此,不必在PHP中执行逻辑,然后将全部结果发送给客户端,您可以向客户机发送一个较小的脚本,该脚本将为您构建内容,同时减少服务器的负载。下面是可以用PHP构建和发送的JavaScript/HTML示例(136 chars-128通过网络):

代码语言:javascript
复制
echo "<pre id=\"c\"><\pre><script type=\"text/javascript\">for(i=0;i++<100;){document.getElementById('c').innerHTML+=i+'\n';}</script>";

下面是一把小提琴就能看到它的动作.

票数 3
EN

Stack Overflow用户

发布于 2011-08-05 06:12:11

希望这是刁钻的问题。在我看来,正确的回答是:“打印这一点文字真的是我们的瓶颈吗?”如果花费的时间对应用程序的总体速度有微不足道的影响,那么花费更快的时间就是浪费时间。

另一方面,亚当提出了一个很好的观点,在他的回答中。一些瓶颈在编码完成后很难修复。

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

代码语言:javascript
复制
echo "1<br/>2<br/>3<br/>4<br/>5<br/>6<br/>7<br/>8<br/>9<br/>10<br/>";
票数 5
EN

Stack Overflow用户

发布于 2011-08-05 06:26:08

当尝试编写高效的代码时,我从项目一开始就尝试遵循一些通用的实践。

在您提到的示例中,我试图避免重复进行回显调用,因为您可以通过构建要呈现的代码,然后在一个调用中回显它,从而实现显着的性能增强。例如:

代码语言:javascript
复制
for ($i = 1, $string = ''; $i <= 10; $i++) {
    s .= $i.'<br />';
}

echo $string;

当然,在这个示例中,总体上没有什么不同,但是如果您从项目一开始就不遵循这种简单约定,那么您以后就需要进行大规模的重构,而不是从一开始就做到这一点。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7035393

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档