[英]How can I benchmark different languages / frameworks?
我想比较同一语言中不同语言和/或不同框架的性能。 这是针对用于Web开发的服务器端语言。 我知道苹果与苹果的比较是不可能的,但是我希望它尽可能保持公正。 这里有一些想法:
可以通过每秒请求数来衡量它们,也可以多次使用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快。
您可能会发现某些事情在某些语言中很难完成,因此在进行此过程时将其从竞争中删除。
编写测试是容易的部分,从数字中获得有意义的答案将是困难的部分,因为您的偏见可能会使您的分析成色,因此请注意这一点。
我将使用一些实际的应用程序来执行此操作,以免浪费工作,而只是重复工作。
最好采用现有基准之一:
http://www.sellersrank.com/web-frameworks-benchmarking-results/
http://avnetlabs.com/php/php-framework-comparison-benchmarks
http://www.yiiframework.com/performance/
但是,如果您确实需要找出适合您的项目的更快的框架-您将需要使用该框架编写项目模型并对其进行测试。
您将花费大量时间,并意识到这都是浪费。
完成测试后,您将了解到1000000个空迭代的循环距离现实生活很远,并且达到了Apache基准。
这样一来,您就不会知道操作码缓存器,它将破坏您以前的所有结果。
然后,您将了解到单个数据库查询将比API调用花费更长的时间1000倍,因此,比较数据库访问方法确实是浪费。
然后,您将了解内存缓存,这将使您可以跳过已经发现的一些严重瓶颈等。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.