成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

使用 GPU.js 改善JavaScript性能

開發 前端

 你是否曾經嘗試過運行復雜的計算,卻發現它需要花費很長時間,并且拖慢了你的進程?

有很多方法可以解決這個問題,例如使用web worker或后臺線程。GPU減輕了CPU的處理負荷,給了CPU更多的空間來處理其他進程。同時,web worker仍然運行在CPU上,但是運行在不同的線程上。

在該初學者指南中,我們將演示如何使用GPU.js執行復雜的數學計算并提高JavaScript應用的性能。

什么是GPU.js?

GPU.js是一個針對Web和Node.js構建的JavaScript加速庫,用于在圖形處理單元(GPGPU)上進行通用編程,它使你可以將復雜且耗時的計算移交給GPU而不是CPU,以實現更快的計算和操作。還有一個備用選項:在系統上沒有GPU的情況下,這些功能仍將在常規JavaScript引擎上運行。

當你要執行復雜的計算時,實質上是將這種負擔轉移給系統的GPU而不是CPU,從而增加了處理速度和時間。

高性能計算是使用GPU.js的主要優勢之一。如果你想在瀏覽器中進行并行計算,而不了解WebGL,那么GPU.js是一個適合你的庫。

為什么要使用GPU.js

為什么要使用GPU執行復雜的計算的原因不勝枚舉,有太多的原因無法在一篇文章中探討。以下是使用GPU的一些最值得注意的好處。

GPU可用于執行大規模并行GPGPU計算。這是需要異步完成的計算類型

當系統中沒有GPU時,它會優雅地退回到JavaScript

GPU當前在瀏覽器和Node.js上運行,非常適合通過大量計算來加速網站

GPU.js是在考慮JavaScript的情況下構建的,因此這些功能均使用合法的JavaScript語法

如果你認為你的處理器可以勝任,你不需要GPU.js,看看下面這個GPU和CPU運行計算的結果。

如你所見,GPU比CPU快22.97倍。

GPU.js的工作方式

考慮到這種速度水平,JavaScript生態系統仿佛得到了一個可以乘坐的火箭。GPU可以幫助網站更快地加載,特別是必須在首頁上執行復雜計算的網站。你不再需要擔心使用后臺線程和加載器,因為GPU運行計算的速度是普通CPU的22.97倍。

gpu.createKernel 方法創建了一個從JavaScript函數移植過來的GPU加速內核。

與GPU并行運行內核函數會導致更快的計算速度——快1-15倍,這取決于你的硬件。

GPU.js入門

為了展示如何使用GPU.js更快地計算復雜的計算,讓我們快速啟動一個實際的演示。

安裝

sudo apt install mesa-common-dev libxi-dev // using Linux

npm

npm install gpu.js --save

// OR

yarn add gpu.js

在你的Node項目中要導入GPU.js。

import { GPU } from ('gpu.js')

// OR

const { GPU } = require('gpu.js')

const gpu = new GPU();

乘法演示

在下面的示例中,計算是在GPU上并行完成的。

首先,生成大量數據。

const getArrayValues = () => {

// 在此處創建2D arrary

const values = [[], []]

// 將值插入第一個數組

for (let y = 0; y < 600; y++){

values[0].push([])

values[1].push([])

// 將值插入第二個數組

for (let x = 0; x < 600; x++){

values\[0\][y].push(Math.random())

values\[1\][y].push(Math.random())

}

}

// 返回填充數組

return values

}

創建內核(運行在GPU上的函數的另一個詞)。

const gpu = new GPU();

// 使用 `createKernel()` 方法將數組相乘

const multiplyLargeValues = gpu.createKernel(function(a, b) {

let sum = 0;

for (let i = 0; i < 600; i++) {

sum += a\[this.thread.y\][i] * b\[i\][this.thread.x];

}

return sum;

}).setOutput([600, 600])

使用矩陣作為參數調用內核。

const largeArray = getArrayValues()

const out = multiplyLargeValues(largeArray[0], largeArray[1])

輸出

console.log(out\[y\][x]) // 將元素記錄在數組的第x行和第y列

console.log(out\[10\][12]) // 記錄輸出數組第10行和第12列的元素

運行GPU基準測試

你可以按照GitHub上指定的步驟運行基準測試。

npm install @gpujs/benchmark

const benchmark = require('@gpujs/benchmark')

const benchmarks = benchmark.benchmark(options);

options 對象包含可以傳遞給基準的各種配置。

前往GPU.js官方網站查看完整的計算基準,這將幫助你了解使用GPU.js進行復雜計算可以獲得多少速度。

結束

在本教程中,我們詳細探討了GPU.js,分析了它的工作原理,并演示了如何進行并行計算。我們還演示了如何在你的Node.js應用中設置GPU.js。

文中鏈接請點擊文末閱讀原文鏈接

原文:https://blog.logrocket.com/improving-javascript-performance-with-gpu-js/

作者:Solomon Eseme

責任編輯:武曉燕
相關推薦

2021-05-28 09:10:40

JavaScript性能GPU

2021-09-30 06:31:12

Gpu.jsWeb 版

2017-12-14 14:32:30

.Net內存代碼

2011-07-27 14:10:43

javascript

2021-01-14 10:48:34

Docker CompNode.js開發

2014-08-14 10:04:19

OpenStackDHCP

2010-08-03 10:04:51

Linux Kerne

2015-03-31 14:47:22

JavaJava性能

2009-02-09 18:02:00

2024-08-16 18:42:23

2025-05-16 16:24:51

云計算服務器邊緣計算

2022-11-17 10:52:48

數字化轉型

2014-03-12 18:04:00

asm.jsWeb性能

2019-03-22 09:50:52

WebJavaScript前端

2014-02-17 11:15:56

存儲

2010-05-20 18:40:33

IIS服務器

2012-03-09 09:51:35

2023-12-04 09:00:00

PythonRuff

2012-06-01 09:54:03

2020-11-23 15:49:28

物聯網
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产亚洲一区精品 | 欧美性大战久久久久久久蜜臀 | 久久精品综合 | 91精品国产综合久久精品 | 久久在线看 | 久久午夜电影 | 九九亚洲精品 | 亚洲三区在线观看 | 国产精品毛片一区二区在线看 | 91免费版在线 | 荷兰欧美一级毛片 | 日日操夜夜操天天操 | 伊人免费视频二 | 国产精品1区2区3区 国产在线观看一区 | 成年男女免费视频网站 | 欧美成年人视频在线观看 | 一级特黄a大片 | 美女爽到呻吟久久久久 | 成年人在线| 精品国产精品国产偷麻豆 | 天堂视频中文在线 | 视频一区二区三区四区五区 | 久久中文字幕一区 | 在线国产视频 | 人人精品 | 国产在线一区二区三区 | 亚洲最大av | 国产91在线精品 | 欧美激情一区二区三级高清视频 | 99福利视频 | 国产 日韩 欧美 在线 | 亚洲日韩中文字幕一区 | 在线中文字幕视频 | 超碰97人人人人人蜜桃 | 国产亚洲网站 | 国产精品久久国产精品 | 欧美a∨ | 国产精品亚洲视频 | 久久男女视频 | 日韩在线播放一区 | 一色桃子av一区二区 |