web在线gpu stress压力测试烤鸡是什么原理
前言
最近天气越来越冷了,就想给 mac 烤机一下来暖暖腿,但是又不想下压力测试工具,就想着有没有能够跨平台的烤鸡方法。
记得之前还有用浏览器挖矿的,索性就搜了一下 web cpu gpu stress
,没想到还真有,还不少。不过效果都比较差,唯一一个效果拉满的是 https://mprep.info/gpu/
,但是也仅限于 Windows 平台,比较完美的实现了双烤,
在 macOS 14 下仅仅能实现 50%左右的 CPU 负载
不过挺好奇的,为什么只有这一家能够实现比较完美的双烤,让我们扒扒他的实现
实现
打开控制台,在点击压力测试按钮的时候发现加载了几个 worker
CPU部分:
https://mprep.info/assets/js/stress-cpu-worker.js
没啥好说的,纯粹的js运算
如果这里换成 wsm 会不会对性能压榨的更多呢
1 | !function() { |
GPU部分:
https://mprep.info/assets/js/stress-gpu-worker.js
这里就比较有意思了
1 | importScripts("/assets/js/gpu-browser.min.js"), |
找到这个 gpu-browser.min.js
,看看是啥
原来是使用了 gpu.js
,这个第三方库
看都看到这里了,不妨继续看一看 gpu.js
的具体实现
gpu.js 实现
kernel 中有 headless-gl 可选,这个是什么
headless-gl
这个是给 node 用的
具体怎么实现的呢
其中用到了 node-bindings
,这个是啥,又是怎么实现的呢
解释一下 require.resolve
ndoe-gyp
具体怎么实现的呢
参考文章
- https://sq.sf.163.com/blog/article/173592945449734144
- https://developer.mozilla.org/zh-CN/docs/Web/API/Worker/Worker
- https://developer.mozilla.org/zh-CN/docs/Web/API/WebGL_API/Tutorial/Creating_3D_objects_using_WebGL
- https://blog.csdn.net/z591102/article/details/117473968
- https://github.com/gpujs/gpu.js
- https://github.com/stackgl/headless-gl
- https://www.zhihu.com/question/36291768/answer/3041010590
- https://github.com/nodejs/node-gyp