如何对不同编程语言编写的库进行性能测试?
-
16-09-2019 - |
题
问题是:给定许多具有相似或相同范围的编程库(例如XML 解析器、正则表达式、标记……);是否有工具可以对这些库运行性能测试并进行比较(并生成报告),即使这些库可能是用不同的编程语言(例如 java、C#、ruby、python、perl 等)编写的?
我看了这些 opensourcetesting.org/performance.php, ,但它们都不符合上面的(有点模糊)要求。
是否有用于跨语言跨平台性能测试的工具包或框架?
谢谢。
解决方案
我不会尝试对多种语言使用单一工具包。这不太可能为每个应用程序带来最佳(甚至平均)性能。
相反,我会尝试提出一个框架设计,它定义了要测试的内容,并具有通用的数据集。然后每种语言/库都可以提供自己的框架 执行 它测试适合该库的操作。这样,即使操作不使用 精确的 相同的语法/调用。你最终测试了 惯用语 该库/语言的代码,而不仅仅是最低公分母。
这是我对协议缓冲区进行基准测试所采用的方法。到目前为止,我的非常基本的框架已经在 C# 和 Java 中实现了,我现在正在编写一个更丰富的框架,它允许运行整个“基准脚本”。一个理想的目标是同一平台内的不同实现(例如Protocol Buffer 的不同 .NET 实现)应该能够轻松地连接到相同的核心基准测试代码。
在我看来,重要的是拥有一组通用的操作(即使它们不是 全部 实施者 全部 库)和通用数据集。这是基准测试有意义的唯一方法。
其他提示
如果可能的话,这将是最好使用某种形式的依赖注入的,以便可以插出一个模块并与另一个切换它。你需要的是寿(包装即是),这使得工作更难,但整体设计好之前创建这样的库唯一接口。积极的一面是,如果你想基准更早接口并不一定是完整的,但只是为了揭露什么,你觉得这是最,这有利于在PERF。是个问题。
在能力在很大程度上取决于所使用的语言。
我不喜欢人工测试。他们大部分时间inacurate IMO,人们往往忽略了一个库函数确实或多或少那么其他的库函数,而他们看起来一样的东西。我很少遇到没有那种性能基准。
在另一侧,很少有这样的事情完全更好库。许多库本良好的性能在某些情况下,其中其他类似的文库可以吸,反之亦然。
所以,如果性能是你的应用程序中最重要的事情,国际海事组织做的最好的事情是创建界面的操作,你想导入,然后插件/出几个库,看看在实际基准的差异,应用操作的基准,而不是一些人工数学魔神......