【问题标题】:How can I compare the performance of PHP to Perl?如何比较 PHP 和 Perl 的性能?
【发布时间】:2010-12-27 00:16:13
【问题描述】:

虽然两者都是解释性语言,但还是有区别?

两种语言的性能差异是什么? 即使 Perl 会比 PHP 快,大多数人还是会选择 PHP,因为 PHP 的简单性。 有人有这方面的经验吗?

【问题讨论】:

  • 当你用每种语言编写类似的程序并运行它们时,你看到了什么?
  • 这取决于您要解决的任务。
  • PHP 的简单性?那在哪里? :) (说真的,这两种语言的“简单性”都值得商榷。人们倾向于 PHP,因为它入门门槛低,让 Perl 编程在虚拟主机上运行往往需要更多努力。)
  • @streetparade:你有什么区别?比较类似程序的结果比较性能。你怎么能说你想要一个而不是另一个?你在说什么?请更新问题以说明您想要什么。
  • 不清楚你在问什么。性能很少足以成为语言之间的决定因素。不同的语言适合解决不同的任务,程序员的知识和专长也很重要。

标签: php performance perl


【解决方案1】:

首先,您必须定义“性能”的含义,以及您愿意放弃多少来获得它。

大多数人会告诉您,这意味着“以最快的速度完成任务”。但这不是很有趣。如果您想要一个真正快速的解决方案,您不应该使用 PHP 或 Perl。您希望尽可能接近裸机。高级语言浪费了大量时间,因为它们是通用工具。他们必须准备好做任何事情,而不仅仅是你想做的事情。因此,他们放弃了一些速度以换取灵活性。

哦,但是在如此低的级别上进行编程需要很长时间并且不可移植。因此,现在您必须考虑开发时间,以使您的程序达到可以接受的速度。如果它在眨眼间完成,你需要它在半眨眼内完成吗?也许高级语言足够快。

有些人会告诉你 Perl(或其他语言)真的很简单,而且它适合有经验的程序员。但是,如果您还不了解 Perl,这对您没有帮助。语言真的不重要。如果你懂 PHP 但不懂 Perl,也许今晚你可以有一个 PHP 解决方案。如果您阅读我的Learning Perl 书,如果一个有理智的人完成所有练习,他们可以在大约 40 小时内完成,也许您在两周内就有一个 Perl 解决方案。反之亦然,一个具有合理 Perl 技能的人今晚可能会得到一个 Perl 解决方案,但一周后就会有一个 PHP 解决方案。额外的开发人员时间可能不值得。

然而,我看到任何类型的程序员的一个常见问题是效率低下的根本原因:他们根本不知道如何编程,也不关心。当然,他们可以制作一个语法上有效的程序,他们可以将一系列 Rube Goldbergesque 语句串在一起,最终产生预期的效果,但他们不知道如何设计、有效利用资源等等。

我不得不评估的一个这样的伪装者坚持要求公司购买更多硬件,尽管 CPU 利用率从未超过 5%。他制作了巨大的内存散列来配置所有内容,每个散列占用 500 MB 并在 16 个 apache 子进程上运行。他上传文件并将其放入数据库的非常简单的程序受到机器中 RAM 物理量的限制。他的表现真的很低,因为他不知道自己在做什么。他使用 Perl 并不重要。

确实,此站点上现已删除的答案使用了 16GB 到 generate 100 random numbers。如果你知道如何设计程序,你就不会用任何语言做那种愚蠢的事情。

有些人喜欢指出玩具程序的基准。问题是您对编写玩具程序从不感兴趣,因此基准测试无关紧要。 Tim Bray 举办了Winde Finder 比赛,并尽其所能地让 Ruby 或 Erlang 解决方案脱颖而出,Perl 获得了大奖。不过不要太兴奋。请注意,前 20 个解决方案仅来自少数人,而且大多数语言的解决方案也很差。一些顶级的解决方案是在 Erlang 中,尽管 Tim 本人在 Erlang 方面不够熟练,无法获得这些结果(而且他并不懒惰,请注意)。他还指出,Ruby 解决方案在 Mac 笔记本电脑上的运行速度比在 Sun 的 T5120 上运行得更快。不仅如此,许多顶级解决方案,无论是哪种语言,都使用相同的技术:它们映射一个文件。节目基本相同。还来图?编程语言甚至都不是重要的决定。

现在也许有些人开始看到生产力的角度:我必须投入多少才能得到什么?我的许多 Perl 同事会嘲笑 PHP,对它的设计进行冷嘲热讽,等等,但他们完全忽略了这样一个事实,即对于一些基本的东西,你必须投入很少的东西才能得到你需要的东西。但是,他们可能是对的,因为您牺牲了很多将自己绑定到 PHP 模型中。也许 PHP 给你一个短期的胜利,这是完全有效的,但押注它可能不是正确的长期解决方案,例如,当你想转向 Web 服务而不是网页时(我正在寻找Sourceforge)。

它只是从那里继续。您必须弄清楚您想要什么“性能”,弄清楚您的所有选择如何影响它,然后选择适合您的解决方案。可以说没有人可以为您回答这个问题,而且即使对您来说,答案也可能会根据新的要求而改变。

【讨论】:

  • 这实际上是精通 Perl 的一整章,以及我的一些播客演讲:www252.pair.com/comdog。而且,为什么 StackOverflow 不能成为我的博客。 :)
  • “然而,我看到任何类型的程序员的一个常见问题是效率低下的根本原因:他们根本不知道如何编程,他们也不关心。” +1 只为那句话。如此清晰,如此简洁,并且与大多数与编程相关的问题/问题如此相关。太糟糕了,它是 CW,是的,而且太糟糕了,我无法为其余的答案给出第二个 +1。
  • 你赚钱了,我一半的工作是重做网站的后端,让它们更快更小。但大多数时候,有人只是把一堆我不敢相信的垃圾扔在一起。将网站的后端减少 60% 对我来说并不奇怪。大多数时候就是这么糟糕。这在 php 中很常见,因为它易于学习且非常灵活。
【解决方案2】:

The Computer Language Benchmarks Game 比较几种编程语言。

【讨论】:

  • 让我很高兴我花时间为 Perl 提交更好的代码——几个月前它失去了大部分基准。再一次,这证明了好代码和坏代码之间的差异通常超过了一种语言实现和另一种语言实现之间的差异:)
  • @hobbs “证明好代码和坏代码之间的区别”也许证明了在 4 个内核上运行的代码有时比只在一个内核上运行的代码更快 ;-)
  • 我对这方面有疑问,benchmarksgame.alioth.debian.org/u64q/… 使用 perl 运行得更快,但 php 在列表中排名第二...?
  • PHP 在 php7 中有很大的速度提升。但是当你开始研究其他一些任务时,perl 会通过 php.ini。我知道有几家公司在 php 中做了所有基础知识,但使用其他语言来处理大量数据。 Php 的基础很好。我不是 php 的忠实粉丝,但你必须在功劳的地方给它功劳。我宁愿选择 perl,因为它的范围很广。 PHP 如此简单,但有限,这就是它现在运行速度如此之快的原因。
【解决方案3】:

这方面的信息很多,很容易获得。
在 Google 上花了大约 1 分钟才找到这些热门歌曲以及更多...

编辑:顺便说一句;你有什么特别的问题要解决吗?我认为如果你举个例子会更容易得到一个好的答案:)

【讨论】:

  • 同意。 IMO,没有特别的问题,这种问题对所有相关人员来说都是浪费时间。
【解决方案4】:

我创建了一个 hello world 应用并运行了 1000 次。

在这种情况下,PHP 比 PERL 慢得多。

你好.pl

print "Hello, World!\n";

结果:

time for i in `seq 1000`; do perl ./hello.pl >/dev/null; done

真正的 0m1.001s
用户 0m0.039s
系统 0m0.083s


你好.php

<?php print "Hello World!"; ?>

结果:

time for i in `seq 1000`; do php ./hello.php >/dev/null; done

真正的 0m35.788s
用户 0m24.373s
系统 0m4.592s

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-10
    • 1970-01-01
    • 2010-11-14
    • 2012-03-29
    • 2015-05-22
    • 2019-02-05
    相关资源
    最近更新 更多