如何比较PHP与Perl的性能?

时间:2009-12-15 21:59:44

标签: php performance perl

虽然两者都是解释型语言但存在差异或?

两种语言的性能差异是什么? 即使Perl比PHP快,但由于PHP的简单性,最多会选择PHP。 有人有这方面的经验吗?

4 个答案:

答案 0 :(得分:23)

首先,你必须通过“表现”来定义你的意思,以及你愿意为了达到这个目的而放弃多少。

大多数人会告诉你,这意味着“最快完成任务”。但这并不是很有趣。如果你想要一个非常快速的解决方案,你不应该使用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中,尽管蒂姆本人在Erlang上并不够熟练以获得这些结果(并且他并不懈怠,请注意)。他还指出,在Mac笔记本电脑上,Ruby解决方案的运行速度比在Sun的T5120上运行得快。不仅如此,但许多顶级解决方案,无论使用何种语言,都采用了相同的技术:它们映射了一个文件。这些节目基本相同。得到照片了吗?编程语言甚至不是重要的决定。

现在也许有些人开始看到生产力的角度:为了得到什么,我需要投入多少钱?我的许多Perl同事都会嘲笑PHP,对它的设计做出讽刺评论,等等,但是他们完全忽略了这样一个事实:对于一些基本的东西,你必须投入很少的东西才能得到你需要的东西。但是,他们可能是正确的,你牺牲了许多自己与PHP的模型。也许PHP给你一个短期的胜利,这是完全有效的,但打赌它可能不是正确的长期解决方案,比如说,当你想转移到Web服务而不是网页时(我正在寻找)在你,Sourceforge)。

它只是从那里开始。您必须弄清楚您对“性能”的要求,找出所有选择对您的影响,然后选择适合您的解决方案。这是一个很长的路要说,没有人可以为你回答这个问题,即使对你来说,答案可能会根据新的要求而改变。

答案 1 :(得分:15)

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

答案 2 :(得分:4)

有很多关于此的信息很容易获得。
花了大约1分钟在谷歌上找到这些点击和更多......

编辑:顺便说一下;您正试图解决一个特殊问题吗?如果你举一个例子,我认为得到一个好答案会更容易:)

答案 3 :(得分:0)

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

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

hello.pl

print "Hello, World!\n";

结果:

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

真实0m1.001s
  用户0m0.039s
  sys 0m0.083s


hello.php

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

结果:

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

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