Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Nodejs CPU密集型任务_Node.js - Fatal编程技术网

Node.js Nodejs CPU密集型任务

Node.js Nodejs CPU密集型任务,node.js,Node.js,最近开始使用node开发,遇到了一个问题。我有一个web服务,它是一个原始的银行。基本上是原始文件(摄影资料)的集合。用户只需上传和下载。没什么特别的。但最近我想出了一个主意,添加排序功能,这取决于相机设置:快门速度、地理位置、fstop、颜色等。基本上,在上传原始文件时,我需要处理它,这是非常繁重的文件,每个文件大约60-150 MB,通常用户上传3-4个文件。在不影响服务器性能的情况下处理繁重文件的最佳解决方案是什么。如果您自己进行原始计算,您可以研究GPU加速它们。目前最好的图书馆就是。如

最近开始使用node开发,遇到了一个问题。我有一个web服务,它是一个原始的银行。基本上是原始文件(摄影资料)的集合。用户只需上传和下载。没什么特别的。但最近我想出了一个主意,添加排序功能,这取决于相机设置:快门速度、地理位置、fstop、颜色等。基本上,在上传原始文件时,我需要处理它,这是非常繁重的文件,每个文件大约60-150 MB,通常用户上传3-4个文件。在不影响服务器性能的情况下处理繁重文件的最佳解决方案是什么。

如果您自己进行原始计算,您可以研究GPU加速它们。目前最好的图书馆就是。如果你还没有让你的服务器异步工作,甚至尝试用节点的集群特性来做IT(在JS中你可以得到多线程)。
  • 您是否有一个很好的工作队列解决方案来对作业进行优先级排序并将它们分散到多个工作流程中
  • 在多核系统上,您是否利用了使每个流程更高效的方法
  • 您是否使用编译的库来帮助更快地处理图像?正如KolCrooks所说,GPU加速库是一项巨大的资产,因为它们可以将处理时间从几分钟缩短到几分之一秒。这仅在您的服务器具有足够的GPU资源时才相关,“内置”GPU很少满足要求
  • 您如何存储和交换这些图像?您可以使用什么网络拓扑?10Gbit与1GBit在这里可能会产生巨大的差异

我不认为有什么好方法可以处理你要求的事情。除非文件的格式使您可以通过哈希表中的一个键或其他什么(这是一个O(1),因为它是直接查找),否则您必须处理数据并执行任何您想要的操作。这就是说,你可以编写一些高度专业化的C++代码或其他低级代码,这些代码被优化到你的特定任务,但是最终,如果你必须处理大量的数据,你需要内存和处理器的形式的力量。要处理的I/O更为繁重,例如fs、db、存储到远程存储。I/O通常不是什么大问题,因为现代NVMe SSD可以处理2GB/s或更多。另一方面,与GPU相比,CPU处理大型图像的速度非常慢。我知道有浏览器的网络工作者,在nodejs文档中找不到。遗憾的是,我的服务器上没有GPU。关于节点中的工作线程,我认为除了为C++编写一个C++插件,没有其他方法可以访问它们吗?如果你没有GPU,那就是你在处理图像时的第一个问题。我知道有一家初创公司购买了一批MacPro机器,因为Core Image(macOS)和GPU acceleration将其工作流程从每张图像的秒数减少到了毫秒,Core Image可以以每秒60帧的速度实时工作。不要低估GPU能为你做什么。基于云的GPU实例,或内部的解决方案是值得研究的。那么,1,这是考虑优化过程本身,如果它下降到毫秒,那么一个小的事件循环块将不会是一个问题。尝试使用GPU加速库。有很多你可以很容易地通过FFI直接连接到节点,NVIDIA和AMD都支持和支持各种项目,再考虑苹果的核心图像能做什么,它是非常快的。