Что вы считаете задачей с интенсивным процессором. С точки зрения... алгоритма/кода, например (не столько для использования, как для редактирования видео и т.д.). Причина в том, что главная причина не использовать NodeJS, что мне действительно нравится, - это в основном задача с интенсивным использованием ЦП. Так что же такое? Например, сортировка, поиск, трансверсальный граф, умножение матрицы?
Что такое CPU Intensive tasks (например, сортировка, поиск и т.д.)
Ответ 1
Такие термины, как "интенсивный" или "дорогой", являются относительными, и не всегда очевидно, какие действия требуют интенсивного процессора. Вообще говоря, все, что не является вводом-выводом, является CPU. И I/O является асинхронным в node.js, поэтому не проблема. Поэтому у нас осталось все, кроме дорогостоящих операций ввода-вывода.
Твой подход к подбору общих узоров является разумным. Сортировка, поиск и даже алгоритмы в целом связаны с ЦП. Конечно, вы не можете исключить использование ЦП, но если вы можете сделать свою сортировку базы данных вместо кода приложения, вам может быть лучше.
Я также буду следить за большими циклами. Заглушка, которая не запускает асинхронные события, является узким местом. Конечно, нельзя полностью избегать циклов. Это факт жизни для программирования. Если ваши циклы короткие, тогда проблем нет. Если вы найдете цикл, который выполняется 10 000 раз, вы можете захотеть разбить его, используя setTimeout, process.nextTick или отдельный процесс узла.
10000 выбрано произвольно. Это зависит от того, что делает цикл. Ваше возражение может отличаться.
Ответ 2
Процессы или задачи, которые выполняются на компьютере, требуют различных ресурсов, таких как циклы CPU, память, диск или сеть, которые управляются операционной системой, так что каждая задача выполняется эффективно (не дожидаясь, если возможно, ресурс).
ОС пытается максимизировать использование ресурсов, позволяя многим процессам одновременно использовать ресурсы. Если процесс запрашивает определенный ресурс в больших количествах, он может выполнить узкое место (задержка) его выполнения. Говорят, что этот ресурсоемкий ресурс является ресурсоемким. Поэтому ресурсоемкость - относительная терминология.
Сортировка, поиск, обход графика, умножение матрицы - это все операции с ЦП, процесс имеет CPU-intensive
или не зависит от того, насколько и насколько часто выполняется их выполнение. Например, trans-coding video
или compressing files
довольно интенсивно, потому что они выполняют операции с ЦП намного больше, чем им нужно читать/записывать память или диск. Если вы планируете это делать, вы должны создать для него отдельный дочерний процесс, чтобы он не замедлял процесс узла, который является однопоточным или лучше создавать кластер узлов.
Ответ 3
В этом действительно работает скрипт Bash. Мой профессор всегда нападает на нас о написании эффективного кода, который облегчит работу с процессором
Вот хороший пример неэффективной практики в Linux
http://hacktux.com/bash/script/efficient
Другим примером, о котором я могу думать, являются рекурсивные функции или функции, которые постоянно называют себя до тех пор, пока условие не будет удовлетворено. Обычно они занимают много мощности процессора.