我的编程空间,编程开发者的网络收藏夹
学习永远不晚

怎么使用GPU.js改善JavaScript性能

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

怎么使用GPU.js改善JavaScript性能

这篇文章将为大家详细讲解有关怎么使用GPU.js改善JavaScript性能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

使用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.js改善JavaScript性能

如你所见,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改善JavaScript性能”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

怎么使用GPU.js改善JavaScript性能

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

怎么改善移动设备网页的性能

这篇文章主要为大家展示了“怎么改善移动设备网页的性能”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“怎么改善移动设备网页的性能”这篇文章吧。正文1、桌面网页的性能检测桌面浏览器使用的页面可以利用一
2023-06-08

使用cache改善系统性能的依据是什么原理

这篇文章给大家分享的是有关使用cache改善系统性能的依据是什么原理的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。使用cache改善系统性能的依据是程序的局部性原理。当CPU需要读取数据时,首先在cache中查找
2023-06-15

解释在SQL Server中如何使用表分区来改善性能

在SQL Server中,表分区是一种将数据划分为多个逻辑部分的技术,每个部分称为一个分区。表分区可以帮助改善性能,提高查询速度和维护效率。以下是一些在SQL Server中使用表分区来改善性能的方法:提高查询性能:通过将数据划分为多个分区
解释在SQL Server中如何使用表分区来改善性能
2024-06-04

怎么使用JavaScript修改input元素的属性值

这篇文章主要介绍“怎么使用JavaScript修改input元素的属性值”,在日常操作中,相信很多人在怎么使用JavaScript修改input元素的属性值问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么使
2023-07-06

使用JavaScript怎么修改css

本篇文章为大家展示了使用JavaScript怎么修改css,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。js修改css的方法:方法一、使用obj.style.cssTest来修改嵌入式的cssfun
2023-06-14

使用JavaScript怎么改变css样式

这期内容当中小编将会给大家带来有关使用JavaScript怎么改变css样式,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。js改变css样式的方法:第一种:用cssTextdiv.style.cssTex
2023-06-14

怎么使用javascript修改div内容

这篇文章主要介绍了怎么使用javascript修改div内容的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么使用javascript修改div内容文章都会有所收获,下面我们一起来看看吧。一、通过innerHT
2023-07-06

怎么使用JavaScript修改外部CSS

这篇文章主要介绍“怎么使用JavaScript修改外部CSS”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么使用JavaScript修改外部CSS”文章能帮助大家解决问题。首先,让我们了解一下什么
2023-07-06

使用javascript怎么对css进行修改

这篇文章给大家介绍使用javascript怎么对css进行修改,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。javascript 动态修改css样式方法汇总(四种方法)在很多情况下,都需要对网页上元素的样式进行动态的修
2023-06-14

JavaScript计算属性与监视属性怎么使用

本篇内容主要讲解“JavaScript计算属性与监视属性怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JavaScript计算属性与监视属性怎么使用”吧!计算属性(computed)计算
2023-07-04

怎么用javascript实现定时改变图片功能

这篇文章主要介绍了怎么用javascript实现定时改变图片功能的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么用javascript实现定时改变图片功能文章都会有所收获,下面我们一起来看看吧。一、JavaS
2023-07-06

使用JavaScript怎么对CSS样式进行修改

这期内容当中小编将会给大家带来有关使用JavaScript怎么对CSS样式进行修改,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。html中的内容:2023-06-14

怎么使用备忘录来改进Javascript函数

本篇内容主要讲解“怎么使用备忘录来改进Javascript函数”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用备忘录来改进Javascript函数”吧!什么是备忘录?备忘录是缓存的一种形式
2023-06-29

怎么使用javascript改变span标签中的值

这篇文章主要介绍怎么使用javascript改变span标签中的值,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!使用javascript改变span标签中值的方法:首先打开JS执行工作环境,选择要更改值的span;然
2023-06-14

使用javascript怎么在object中删除属性

使用javascript怎么在object中删除属性?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。在js中,可以使用delete关键字在object中删除属性,语法格式为“
2023-06-15

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录