在几年没有使用 Emscripten 之后,我最近发现它现在支持将多线程 C++ 代码编译为 WebAssembly。我已经将简单的合并排序代码放在一起,可以对 1000 万个 float 进行排序( native 代码可以轻松地对更多 float 进行排序,但浏览器似乎将您限制为 1GB 内存):
https://github.com/bsergeev/MtMergeSort
令人惊讶的是,虽然此代码编译为 WebAssembly 并在 Chrome 中运行,但随着使用多线程,浏览器中的排序变得越来越慢(而单线程性能,正如预期的那样,是原生性能的 1.5...2 倍) : native 代码 1.80 秒,WebAssembly 3.1...3.3 秒,JavaScript 4.69 秒):
浏览器限制 WebWorker 是否会导致多线程性能下降?但是 WebAssembly 中的多线程有什么意义呢?
最佳答案
关于c++ - 浏览器中的多线程 WebAssembly 比单线程慢,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54729084/