搜索
首页web前端js教程使用GPU.js提高JavaScript应用性能的小技巧

使用GPU.js提高JavaScript应用性能的小技巧

相关推荐:《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运行计算的结果。

2.jpg

如你所见,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

转载地址:https://blog.zhangbing.site/2020/11/30/improving-javascript-performance-with-gpu-js/

更多计算机编程相关知识,请访问:编程入门!!

以上是使用GPU.js提高JavaScript应用性能的小技巧的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文转载于:zhangbing。如有侵权,请联系admin@php.cn删除
JavaScript数据类型:浏览器和nodejs之间是否有区别?JavaScript数据类型:浏览器和nodejs之间是否有区别?May 14, 2025 am 12:15 AM

JavaScript核心数据类型在浏览器和Node.js中一致,但处理方式和额外类型有所不同。1)全局对象在浏览器中为window,在Node.js中为global。2)Node.js独有Buffer对象,用于处理二进制数据。3)性能和时间处理在两者间也有差异,需根据环境调整代码。

JavaScript评论:使用//和 / * * / * / * /JavaScript评论:使用//和 / * * / * / * /May 13, 2025 pm 03:49 PM

JavaScriptusestwotypesofcomments:single-line(//)andmulti-line(//).1)Use//forquicknotesorsingle-lineexplanations.2)Use//forlongerexplanationsorcommentingoutblocksofcode.Commentsshouldexplainthe'why',notthe'what',andbeplacedabovetherelevantcodeforclari

Python vs. JavaScript:开发人员的比较分析Python vs. JavaScript:开发人员的比较分析May 09, 2025 am 12:22 AM

Python和JavaScript的主要区别在于类型系统和应用场景。1.Python使用动态类型,适合科学计算和数据分析。2.JavaScript采用弱类型,广泛用于前端和全栈开发。两者在异步编程和性能优化上各有优势,选择时应根据项目需求决定。

Python vs. JavaScript:选择合适的工具Python vs. JavaScript:选择合适的工具May 08, 2025 am 12:10 AM

选择Python还是JavaScript取决于项目类型:1)数据科学和自动化任务选择Python;2)前端和全栈开发选择JavaScript。Python因其在数据处理和自动化方面的强大库而备受青睐,而JavaScript则因其在网页交互和全栈开发中的优势而不可或缺。

Python和JavaScript:了解每个的优势Python和JavaScript:了解每个的优势May 06, 2025 am 12:15 AM

Python和JavaScript各有优势,选择取决于项目需求和个人偏好。1.Python易学,语法简洁,适用于数据科学和后端开发,但执行速度较慢。2.JavaScript在前端开发中无处不在,异步编程能力强,Node.js使其适用于全栈开发,但语法可能复杂且易出错。

JavaScript的核心:它是在C还是C上构建的?JavaScript的核心:它是在C还是C上构建的?May 05, 2025 am 12:07 AM

javascriptisnotbuiltoncorc; saninterpretedlanguagethatrunsonenginesoftenwritteninc.1)javascriptwasdesignedAsalightweight,解释edganguageforwebbrowsers.2)Enginesevolvedfromsimpleterterterpretpreterterterpretertestojitcompilerers,典型地提示。

JavaScript应用程序:从前端到后端JavaScript应用程序:从前端到后端May 04, 2025 am 12:12 AM

JavaScript可用于前端和后端开发。前端通过DOM操作增强用户体验,后端通过Node.js处理服务器任务。1.前端示例:改变网页文本内容。2.后端示例:创建Node.js服务器。

Python vs. JavaScript:您应该学到哪种语言?Python vs. JavaScript:您应该学到哪种语言?May 03, 2025 am 12:10 AM

选择Python还是JavaScript应基于职业发展、学习曲线和生态系统:1)职业发展:Python适合数据科学和后端开发,JavaScript适合前端和全栈开发。2)学习曲线:Python语法简洁,适合初学者;JavaScript语法灵活。3)生态系统:Python有丰富的科学计算库,JavaScript有强大的前端框架。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

mPDF

mPDF

mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境