源自这篇文章,测试时发现有些改动。贴一下。
下载benchmark
链接在此,下载之后可以看到benchmark,但是make之后运行官方的benchmark.sh仍然报错,因为没有找到gtime,不知道这是什么。
配置node环境
因为只需要测试优化是否有效,所以只配置了nodejs环境,此处由于我用的是最新的emscripten,编译生成的js文件在nodejs执行时报错了,查了一下原来是用了ES2020才有的支持。而这需要nodejs版本达到14以上,使用apt和清华源安装的nodejs只有12多,因此使用官网方法安装。
编写运行脚本
rm -rf nbodies_c.*
~/Downloads/emsdk/emcc Nbodies/nbodies_c.c -O2 -s WASM=1 -Wall -s MODULARIZE=1 -o nbodies_c.js -s WASM_BIGINT
(time node runnbodies.js) >& resul.txt
主要区别在于 删去了–experiment-wasm-bigint选项,因为最新的nodejs会将其判定为bad option。
第二个改动是利用>&将其写入到文本文件中。
此处使用>&就是要利用子进程写,你可以理解为如果使用常规的>写入的话是直接执行的,而time命令是有延时的,从执行到输出有两个时间,所以可以利用上述方法实现。
参考这篇文章。