繁体   English   中英

我怎样才能对不同的语言/框架进行基准测试?

[英]How can I benchmark different languages / frameworks?

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

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

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

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

我该如何改善?

http://shootout.alioth.debian.org/上有很多很好的建议(以及针对不同语言的大量示例基准测试)

C。

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

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

用相同的语言编写REST Web服务(相同的Web服务,只有两种获取方法)。 此代码应该至少能够返回JSON和XML。

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

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

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

我将为此使用一个数据库,除非您想评估各种数据库,但是对于Web测试,只需在第2阶段进行即可。:)

因此,最终需要进行大量测试,每个测试都需要能够确定实际运行需要多长时间。

然后,您会有很多数字,您可以开始分析,看看哪种方法最适合您。

例如,我(几年前)得知JSON比XML快,REST比SOAP快。

您可能会发现某些事情在某些语言中很难完成,因此在进行此过程时将其从竞争中删除。

编写测试是容易的部分,从数字中获得有意义的答案将是困难的部分,因为您的偏见可能会使您的分析成色,因此请注意这一点。

我将使用一些实际的应用程序来执行此操作,以免浪费工作,而只是重复工作。

您将花费大量时间,并意识到这都是浪费。
完成测试后,您将了解到1000000个空迭代的循环距离现实生活很远,并且达到了Apache基准。
这样一来,您就不会知道操作码缓存器,它将破坏您以前的所有结果。
然后,您将了解到单个数据库查询将比API调用花费更长的时间1000倍,因此,比较数据库访问方法确实是浪费。
然后,您将了解内存缓存,这将使您可以跳过已经发现的一些严重瓶颈等。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM