在不使用Emscripten几年之后,我最近发现它现在支持将多线程C ++代码编译到WebAssembly。我把简单的合并排序代码放在一起,分类1000万个浮点数(本机代码可以很容易地排序,但浏览器似乎限制你到1GB内存):
https://github.com/bsergeev/MtMergeSort
令人惊讶的是,虽然此代码编译为WebAssembly并在Chrome中运行,但随着使用多个线程,浏览器中的排序变得越来越慢(而单线程性能,正如预期的那样,慢1.5~2倍于本机代码:本机代码1.80秒,WebAssembly 3.1 ...... 3.3秒,JavaScript 4.69秒):
浏览器限制WebWorkers导致多线程性能下降?但是WebAssembly中多线程的重点是什么呢?