Многократные потоки ускорят чтение кода с диска в память? - PullRequest
1 голос
/ 13 июля 2011

Если бы у меня был код, который должен был прочитать каждое слово файла в ArrayList или HashSet, было бы быстрее разделить код на несколько рабочих threads и назначить каждому фрагмент файла:работать (предполагая несколько ядер)?Моя интуиция говорит «нет», поскольку в таком случае I/O обычно является узким местом, а не процессором.

Ответы [ 2 ]

3 голосов
/ 13 июля 2011

Канал ввода-вывода от обычного диска обычно намного быстрее, чем сам физический носитель, поэтому ввод-вывод не будет узким местом. С магнитными носителями (иначе говоря, стандартным жестким диском) вы заставите диск биться как сумасшедший, когда головы будут искать различные места, из которых вы читаете. Производительность была бы ужасной, что эквивалентно тому, как корзина катится по пустой 6-полосной автостраде.

Твердотельные накопители не страдают от штрафа за поиск, но они еще недостаточно широко распространены (или не доступны по цене), чтобы их еще много стоило.

2 голосов
/ 13 июля 2011

Это зависит. Ваше мнение о том, что IO станет узким местом , может быть правильным, поскольку многие диски работают последовательно. Но что, если этот диск был особенным, как SSD или RAID, который действительно поддерживал параллельный доступ? Кроме того, если имеется значительный объем связанной с ЦП постобработки, которую необходимо выполнить с данными, то вы можете запустить их одновременно, пока читается другой пакет данных. Не списывайте одновременные опции так быстро!

...