Home >Web Front-end >JS Tutorial >WebWorkers - high performance computing for the front end
Before reading the full text, let me briefly introduce to you what WebWorkers are, and what is the relationship between WebWorkers and web high-performance computing.
First of all, what are WebWorkers?
Simply put, WebWorkers is a new API of HTML5. Web developers can use this API to run a script in the background without blocking the UI. It can be used to do things that require a lot of calculations and make full use of CPU multi-cores.
You can read this article introductionhttps://www.html5rocks.com/en/tutorials/workers/basics/, or the corresponding Chinese version.
The Web Workers specification defines an API for spawning background scripts in your web application. Web Workers allow you to do things like fire up long-running scripts to handle computationally intensive tasks, but without blocking the UI or other scripts to handle user interactions.
You can open this link (https: //nerget.com/rayjs-mt/rayjs.html) Experience the acceleration effect of WebWorkers yourself.
Now browsers basically support WebWorkers.
Parallel.js
It is still too cumbersome to use the WebWorkers interface directly. Fortunately, someone has already encapsulated it: Parallel.js.
Note that Parallel.js can be installed through node:
<script src="parallel.js"></script>
const N = 100000000;// 总次数1亿 function sum(start, end) { let total = 0; for (let i = start; i<=end; i += 1) total += i; for (let i = start; i<=end; i += 1) total -= i; return total; } function paraSum(N) { const N1 = N / 10;//我们分成10分,没分分别交给一个web worker,parallel.js会根据电脑的CPU核数建立适量的workers let p = new Parallel([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) .require(sum); return p.map(n => sum((n - 1) * 10000000 + 1, n * 10000000))// 在parallel.js里面没法直接应用外部变量N1 .reduce(data => { const acc = data[0]; const e = data[1]; return acc + e; }); }
##ReferenceError: _slicedToArray is not defined
It seems that Chrome is not omnipotent. . .
You can test it on this Demo page. The speed increase is about 4 times. Of course, it still depends on the number of cores of your computer's CPU. In addition, I later tested Firefox 55.0.3 (64-bit) on the same computer, and the appeal code actually only took 190ms! ! ! It is also about 190ms under Safari9.1.1. .
I will also introduce other attributes and indicators of front-end high-performance computing to you later, so please continue to pay attention.
The above is the detailed content of WebWorkers - high performance computing for the front end. For more information, please follow other related articles on the PHP Chinese website!