首先,您必须定义“性能”的含义,以及您愿意放弃多少来获得它。
大多数人会告诉您,这意味着“以最快的速度完成任务”。但这不是很有趣。如果您想要一个真正快速的解决方案,您不应该使用 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)。
它只是从那里继续。您必须弄清楚您想要什么“性能”,弄清楚您的所有选择如何影响它,然后选择适合您的解决方案。可以说没有人可以为您回答这个问题,而且即使对您来说,答案也可能会根据新的要求而改变。