【问题标题】:Benchmarks of scripting languages doing the same task?执行相同任务的脚本语言的基准?
【发布时间】:2011-04-02 08:58:12
【问题描述】:

有谁知道我在哪里可以找到有关人们使用两种或多种脚本语言实现的任务的评论或报告,以查看哪种更适合特定工作?我想知道哪些语言最适合哪些类型的操作,以便充分利用它们。

“操作类型”可以是套接字、文件系统、逻辑评估、正则表达式或绘图。

我最感兴趣的是 Python、PHP、Perl 和 Ruby。

【问题讨论】:

  • 这不也是高度依赖平台的吗?
  • 据我所知,这些语言几乎可以在每个平台上运行。当然,测试人员应该足够聪明,可以在同一平台上比较两种语言。
  • 让我们把 Lua 也扔进去...
  • @Andrew Grimm - 也许“更适合某项工作?”既模糊又主观?说 PHP 比 Python 更适合正则表达式是什么意思?

标签: php python ruby perl benchmarking


【解决方案1】:

编程语言大战: http://shootout.alioth.debian.org/ 虽然它可能无法衡量您正在寻找的东西。

但是,基准测试几乎肯定不会告诉您有关您列出的那种高级想法的任何有用信息。对于这些事情,性能(如执行速度)几乎与代码编写的语言无关(至少对于您列出的语言集,所有这些语言都具有非常相似的执行模型),并且几乎所有内容与代码的结构有关。

如果您希望能够根据相关内容选择您列出的一种语言(针对特定任务),您应该提出以下问题:

  • 给定您要运行的平台有哪些限制?您列出的所有语言都有大型运行时系统——解释器——这意味着如果您想在尚未安装它们的系统上使用它们,它们可能需要大量部署成本。话虽如此,Python 至少有 'py2exe' 和 'py2app' 可用于为您的 Windows 或 Mac 应用程序制作可部署的可执行文件——您列出的其他语言可能也有类似的东西。
  • 该语言的标准库中提供了哪些相关功能? (在这种情况下,所有列出的语言都有非常大且有用的标准库)。
  • 您可以使用外部库中的哪些相关功能?
  • 您使用该语言的舒适程度如何?

最后,如果执行速度在您的应用程序中确实非常重要,并且如果您发现即使使用所选语言选择适当的架构也无法达到所需的速度,那么您可以确定瓶颈并重新- 以编译语言实现,提供返回脚本语言的接口,以便将其集成到应用程序中。您列出的所有语言都支持此类本机代码扩展。

【讨论】:

  • 是的,用 c++、c# 甚至 c 编写应用程序的一小部分似乎是个好主意。你完全正确地认为基于基准而不是高级应用程序设计选择来选择语言的危险。例如,根据数据库的查询时间来设计 - 当您应该在应用程序和数据之间放置 memcached 时。
  • +1:“基准几乎肯定不会告诉你任何有用的东西”。停在那里。基准在很大程度上是浪费时间,因为它们必须涉及某种苹果与橘子的比较。像编程语言这样不同的事物之间的基准——根本没有价值。
  • 如果有关于 ruby​​ 1.9.2 和 1.9.1 的信息就更好了。
  • @Andrew Grimm - 这不是 Ruby 1.9 团队要做的事情吗?同时你可以比较数据文件 - alioth.debian.org/scm/viewvc.php/shootout/website/websites/u32/…
  • @S.Lott >> 基准测试在很大程度上是浪费时间,因为它们必须涉及某种苹果与橘子的比较。
【解决方案2】:

我会看the programming tasks on Rosetta code

您应该能够找到您感兴趣的语言的惯用代码,然后在您期望的任何使用条件下进行基准测试。这使您不必自己编写测试,而且您经常会看到针对不同语言的有趣方法。

【讨论】:

  • 哇,Rosetta Code 数据库真的很有用!非常适合查看不同语言的(大多数简单的)问题的多种解决方案。
【解决方案3】:

最好的办法是为您感兴趣的特定任务创建自己的基准。选择您喜欢使用的语言,然后为您将使用的系统和您将执行的任务编写基准。如果您非常关心速度,我还建议您查看各个操作以及如何在每种语言中优化它们(例如:参数顺序、内存使用...)

【讨论】:

  • 如果我有时间那就太好了——而且在某种程度上我必须这样做。但是,我希望在我之前有一些可能有有用的信息。
猜你喜欢
  • 1970-01-01
  • 2010-12-18
  • 1970-01-01
  • 2014-03-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多