webAssembly有标准的基准测试吗?

Is there an standard benchmark for webAssembly?

本文关键字:基准测试 标准 webAssembly      更新时间:2023-10-16

webAssembly或程序语言是否有任何标准的基准测试?

我想将我的c ++程序迁移到webAssembly,所以我必须做一些基准测试来测试webAssembly的性能,并将其与c ++性能进行比较。

还没有。但是,在Wasm CG上已经达成了强烈的共识,以创建一个全面的基准测试套件,请参阅上次F2F会议的笔记和链接的幻灯片。最近为它创建了一个 GH 存储库,但它只包含到目前为止的一般信息。

UPDATE (Post Survey @ Webassembly SF)

在参加网络组装聚会并征求各种意见后。我很幸运地偶然发现了一些非常彻底地考虑过这个问题的人。

  1. 仅当您只想将Javascript的第一次运行(预JIT优化)与wasm速度进行比较时,才使用Fib Seq。这对于查看浏览器内部的更新或机器的更改是否具有显着影响更有用。但是:它是一个微基准测试,因此它不会让您全面了解所有不同类型的速度。(在每种类型的操作中,一种语言并不总是比另一种语言快 x 倍)。TLDR:其他人已经写出来了(不需要自己写)。这应该只与一套其他基准测试函数一起查看,除非您的程序是专门针对 fib seq. :D。
  2. 您真正想做的是:Microbenchmark 用于现有应用程序中最昂贵的操作。这实际上取决于您要执行的应用程序。最适合您的选择可能是在运行时分析现有 c++ 应用程序,以查看哪些操作占用的时间最多。然后,为那些"昂贵"的操作创建某种批量单元测试。假设这是对图像像素的处理:创建一个测试,插入 100 张图片并计算平均执行时间。然后专注于在 .wasm 中重新创建特定的"批量"测试,以查看您将遇到哪些性能变化。这可以帮助您决定是否要迁移/能够预测迁移的速度影响。
  3. 昨晚有一个人阐明了这一点,他是亚伦·特纳(Aaron Turner),他有一篇与基准测试相关的精彩文章,这是我的文章,因为我不想为他说话:https://medium.com/@torch2424/webassembly-is-fast-a-real-world-benchmark-of-webassembly-vs-es6-d85a23f8e193

源语言

我一直在使用斐波那契数列到 25作为我的基准测试。

我为什么?

  • 尽管它的计算成本很高,但用多种语言编程非常容易,而无需涉及一堆导入的库(与加密基准标记相比)

  • 有一些现实世界的用途。

  • 似乎其他人已经这样做了...(如有疑问,请将其排除在外)https://boyan.io/angular-wasm/fibonacci <<甚至显示JS比较!

但是,我仍然会考虑您使用webassembly的目的。 如果您尝试在前端网站上包含 c++ 功能...那么你难道不想针对Webassembly测试Javascript的速度吗(因为浏览器不支持"本机"C++程序,因此无法在上述条件下进行基准测试?我确实知道网络组装可以在浏览器之外使用,如果是这种情况(比如物联网传感器),我会收回我之前的断言。

对于绝大多数可能读到这篇文章的人来说......它们可能会处于"Web应用程序的WebAssembly"的顶部空间

如果我的假设或陈述有误,请纠正我。此外,如果权力有一个建议的标准化基准,LMK!我很想听听在网络组装方面有更多经验的人的意见!

PS:我今晚会参加SF网络大会,会向那里的大佬们提出这个问题!