1.0.3 • Published 2 years ago
@masx200/pi-calculation-multithreading v1.0.3
Pi-calculation-multithreading
Pi calculation, multithreading, based on large number frames decimal.js and webworker
圆周率计算,多线程,基于大数框架 decimal.js 和 webworker
圆周率计算-可设置圆周率位数-可选择线程个数-多线程大数框架 webworker 输出 useragent 大数框架
圆周率计算多线程,使用 BigInteger.js 和浏览器原生的 BigInt 之后速度得到巨大提升!
需要浏览器 chrome68 以上,才原生支持 BigInt
可以测试浏览器的 JavaScript 运行引擎速度
建议在最新版本的 chrome 或者 Firefox 或者 safari 中运行,否则速度可能特别慢
UserAgent: Mozilla/5.0 (Linux; Android 9; MHA-AL00) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.136 Mobile Safari/537.36
开始圆周率多线程测试
线程数为 8
圆周率计算 1000 位
计算圆周率中......
计算完成,用时 1.476 秒第 340 次
圆周率 1000 位
在线演示
https://pi-calculation-multithreading.pages.dev/
API
主线程中使用的计算圆周率的函数
bigintCalculatePi
:使用 "big-integer"进行圆周率计算
decimalCalculatePi
:使用 "decimal.js"进行圆周率计算
参数 1:创建webworker
的函数
参数 2:要计算圆周率的位数
参数 3:要开启的多线程个数
返回值 1:圆周率字符串
返回值 2:计算迭代次数
主线程中关闭所有webworker
的方法
bigintcleanup
和decimalcleanup
子线程中添加消息事件处理程序
bigintworkersetup
和decimalworkersetup
使用方法
在 webworker
文件中添加消息事件处理程序
import { bigintworkersetup } from "@masx200/pi-calculation-multithreading";
bigintworkersetup();
在主线程文件中
当需要关闭所有 webworker
的时候使用如下函数
import { bigintcleanup } from "@masx200/pi-calculation-multithreading";
bigintcleanup();
启动webworker
并计算圆周率
import { bigintCalculatePi } from "@masx200/pi-calculation-multithreading";
import MyWorker from "./mythread1-bigint.js?worker";
//创建webworker的函数
function createworker() {
return new MyWorker();
}
const [resultpi, x] = await bigintCalculatePi(createworker, piwei, threadgeshu);