我如何对不同的语言/框架进行基准测试?

时间:2010-08-12 13:37:30

标签: php asp.net python frameworks benchmarking

我想比较不同语言和/或同一语言中不同框架的性能。这是针对用于Web开发的服务器端语言。我知道苹果与苹果的比较是不可能的,但我希望它尽可能不偏不倚。以下是一些想法:

  • 简单的“Hello World”页面
  • 对象初始化
  • 函数/方法调用
    • 方法主体的范围从空到大
  • 文件访问(读写)
  • 数据库访问

它们可以通过每秒请求数来衡量,也可以使用for循环并循环多次。其中一些基准应测量语言的开销(即:空函数调用),而不是它们执行某项任务的速度。我会采取一些预防措施:

  • 他们将在同一台计算机上运行,​​在新安装的情况下尽可能少的进程。
  • 我会尝试按照官方建议设置服务器;我不会尝试任何优化。

我该如何改进?

4 个答案:

答案 0 :(得分:2)

http://shootout.alioth.debian.org/

有很多好的建议(以及针对不同语言的大量样本基准)

下进行。

答案 1 :(得分:1)

我所做的是编写许多单元测试,以便您可以测试图层。

例如,用PHP,Python和C#编写SOAP Web服务。

使用相同的语言编写REST Web服务(相同的Web服务,只有两种方式可以访问它们)。这个应该能够至少返回JSON和XML。

在C#和Python中编写单元测试以充当客户端,并使用各种结果类型(XML / JSON)测试REST。这很重要,因为稍后您可能需要进行测试以查看哪个是最佳的端到端,并且对于您(它应该是),JSON可能比XML更快解析。

因此,REST / SOAP服务应该转到同一个控制器,以简化您的生活。

此控制器需要测试,因为您可能需要稍后删除它对测试的影响,但是,您也可以编写测试以查看它对数据库的速度。

我会为此使用一个数据库,除非你想评估各种数据库,但是对于网络测试,只需为第2阶段做。:)

因此,您最终得到的是大量测试,每项测试都需要能够确定实际运行所需的时间。

然后你有很多数字,你可以开始分析,看看什么最适合你。

例如,我学到了(几年前我这样做),JSON比XML快,REST比SOAP快。

您可能会发现在某些语言中有些事情要难得多,因此在您完成此过程时会将其从争用中删除。

编写测试很容易,从数字中获得有意义的答案将是更难的部分,因为你的偏见可能会使你的分析变色,所以要小心。

我会用一些真正的应用程序来做这件事,这样就不会浪费工作,只是重复。

答案 2 :(得分:1)

答案 3 :(得分:0)

你将花费大量时间并意识到这一切都被浪费了 完成测试后,您将了解到1000000次空迭代的循环远离现实生活并达到apache基准。
然后你就不知道会破坏你以前所有结果的操作码 然后您将了解到单个数据库查询所需的时间比API调用长1000倍,因此,您对数据库访问方法的比较实际上是浪费。
然后你将学习memcache,它可以让你跳过你已经发现的一些可怕的瓶颈等等。