虽然两者都是解释型语言但存在差异或?
两种语言的性能差异是什么? 即使Perl比PHP快,但由于PHP的简单性,最多会选择PHP。 有人有这方面的经验吗?
答案 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