Jie*_*eng 18 javascript cpu-usage node.js
你认为什么是CPU密集型任务.例如......算法/代码(不是像视频编辑那样的用例等).原因似乎是不使用NodeJS的主要原因我真正喜欢的主要是CPU密集型任务.重要的是什么呢?例如,它是排序,搜索,横向图形,矩阵乘法吗?
Bra*_*don 18
像"密集"或"昂贵"这样的术语是相对的,并且并不总是很明显哪些活动是CPU密集型的.一般来说,任何非I/O都是CPU.I/O在node.js中是异步的,所以不是问题.因此,除了I/O昂贵之外,我们留下了一切.
你选择一般模式的方法是明智的.排序,搜索甚至算法通常都是CPU限制的.当然,您无法消除CPU使用率,但如果您可以对数据库进行排序而不是应用程序代码,那么您可能会更好.
我也会留意大循环.不会触发任何异步事件的循环是一个瓶颈.当然,人们不能完全避免循环.它们是编程生活中的事实.如果您的循环很短,那么没问题.如果找到运行10,000次的循环,您可能需要考虑使用setTimeout,process.nextTick或单独的节点进程将其分解.
10,000是任意挑选的.这取决于循环的作用.你的milage可能会有所不同.
在计算机上运行的进程或任务需要各种资源,如CPU周期,内存,磁盘或网络,这些资源由操作系统管理,以便每个任务有效执行(如果可能,无需等待资源).
OS尝试通过让许多进程同时使用资源来最大化资源利用率.如果进程大量请求特定资源,则可能会阻塞(延迟)其执行.据说这个过程对资源来说是资源密集型的.因此,资源密集型是一个相对术语.
排序,搜索,图遍历,矩阵乘法都是CPU操作,一个过程是否CPU-intensive取决于它们执行的次数和频率.例如,trans-coding video或者compressing filesCPU密集型,因为它们运行的CPU操作远远超过读/写内存或磁盘所需的操作.如果您正在计划这样做,您应该为它创建一个单独的子进程,这样它就不会减慢节点进程,这是单线程的,或者更好地创建一个节点集群.
| 归档时间: |
|
| 查看次数: |
19998 次 |
| 最近记录: |