什么是CPU密集型任务(例如:排序、搜索等等)
What counts as CPU Intensive tasks (eg. sorting, searching etc?)
什么是CPU密集型任务?就…而言例如算法/代码(不像视频编辑等用例)。原因是,似乎不使用NodeJS的主要原因是我真正喜欢的主要是CPU密集型任务。那么什么才算呢?是排序,搜索,图截线,矩阵乘法之类的吗?
像"密集"或"昂贵"这样的术语是相对的,并且并不总是很明显哪些活动是cpu密集型的。一般来说,任何不是I/O的都是CPU。在node.js中I/O是异步的,所以不是问题。因此,除了I/O开销大之外,我们剩下了所有的东西。
你选择通用模式的方法是明智的。排序、搜索,甚至一般的算法都是cpu限制的。当然,你不能消除CPU的使用,但如果你能让你的数据库排序,而不是你的应用程序代码,你可能会更好。
我也会留意大循环。不触发任何异步事件的循环是瓶颈。当然,我们不能完全避免循环。它们是编程的现实。如果你的循环很短,那就没问题了。如果您发现一个循环运行了10,000次,那么您可能需要考虑使用setTimeout、process来中断它。,或一个单独的节点进程。
10,000是任意选取的。这取决于循环做什么。您的里程可能会有所不同。
在计算机上运行的进程或任务需要由操作系统管理的各种资源,如CPU周期,内存,磁盘或网络,以便每个任务有效地执行(如果可能的话,不需要等待资源)。
操作系统试图通过允许许多进程来最大化资源利用率同时使用资源。如果流程请求特定的如果资源过多,会造成执行的瓶颈(延迟)。的流程被认为是资源密集型的。所以资源密集是一个相对的术语。
排序,搜索,图遍历,矩阵乘法都是CPU操作,一个进程是否是CPU-intensive
取决于它们执行的次数和频率。例如,trans-coding video
或compressing files
是相当CPU密集的,因为它们运行的CPU操作远远超过它们需要读/写内存或磁盘。如果您打算这样做,您应该为它创建一个单独的子进程,这样它就不会减慢单线程的节点进程,或者最好创建一个节点集群。
Bash脚本真正涉及到这一点。我的教授总是唠叨我们要写高效的代码来减轻CPU的工作量
下面是Linux
中低效实践的一个很好的例子http://hacktux.com/bash/script/efficient我能想到的另一个例子是递归函数,即不断调用自己直到满足条件的函数。这些通常会占用大量的CPU功率。
- 免费的JQuery表排序插件(带搜索)
- 根据搜索项按相关性合并和排序多个JavaScript数组
- 如何固定具有粘性标题的表的大小以及排序和搜索
- 使用 Greasemonkey 修改 Craigslist 的默认搜索结果排序
- 按距离对搜索结果进行排序
- 如何在 SharePoint Online 中为内容搜索 Web 部件创建排序/筛选
- 无法使用角度智能表进行排序/过滤/搜索
- 数组排序基于纯javascript搜索文本匹配
- 使用递归搜索对对象中的数组进行排序
- 数据表上的日期范围选择器插件.可以't排序和搜索
- 使用Jquery/AJAX/Javascript搜索、排序、分页和过滤DIV
- 根据过滤器和搜索栏重新排序和隐藏图片
- 使用jQuery从单个HTML列表中进行实时搜索和排序
- 搜索和排序在JqGrid (json)中不起作用
- ElasticUI -使用ng-click触发搜索/排序
- JQGrid日期排序和搜索
- 如何使用表排序插件- jquery搜索表中的项
- 排序或搜索列表时,自定义项将消失
- 在javascript中实现搜索结果的多字段排序
- Jquery数据表搜索选项不启用排序图标