Сколько потоков я могу запустить при использовании процессора Intel Core Duo для ускорения массовой загрузки данных из Amazon S3 в пользовательском приложении?

Сколько потоков я могу запустить при использовании процессора Intel Core Duo для ускорения массовой загрузки данных из Amazon S3 в пользовательском приложении?

Как узнать максимальное количество потоков, которые я могу использовать? Я новичок в программировании, поэтому пытаюсь выяснить, что мне нужно знать. У меня есть 950 ГБ файлов для загрузки с Amazon S3. Я думал, что могу использовать два потока, каждый из которых будет загружать половину этого объема, работая параллельно.

Я надеюсь ускорить массовую загрузку данных с Amazon S3, сделав свое приложение многопоточным, но сначала было бы неплохо узнать, поддерживает ли мой компьютер многопоточность.

Характеристики компьютера:

  • Модель: MacBook (13 дюймов, середина 2010 г., A1342)
  • Процессор:2,4 ГГц Intel Core Duo
  • Память: 8 ГБ 1067 МГц DDR3
  • Программное обеспечение: MacOS Sierra 10.12.6

Процессор очень старый и снят с производства, поэтому он не поддерживает Intel hyperthreading. Я не уверен, что он хорош в многопоточности. Но если он может поддерживать многопоточность, сколько потоков он может поддерживать, и повлияет ли на производительность использование слишком большого количества потоков?

Пожалуйста, поправьте меня, если я ошибаюсь, но я читал, чтоядро без поддержки гиперпоточности может поддерживать только 1 поток, поэтому я думаю, что, возможно, мой процессор может поддерживать до 2 потоков, а последующее увеличение количества потоков будет иметь незначительный эффект.

решение1

В вашем вопросе содержится несколько ложных предположений, поэтому позвольте мне прояснить ситуацию:

  1. Многопоточность возможна даже на одноядерных процессорах.Выполнение просто разделяется во времени, так что в любой момент времени активен только один поток, однако общее выполнение потоков является параллельным.
  2. Многопоточность не эквивалентна ускорению.При наивной разработке многопоточное приложение всегда медленнее однопоточного в десятки или даже сотни раз.
  3. Загрузка из внешних сетей в 99% случаев не зависит от многопоточности.Возможно, стоит взглянуть на многодиапазонную HTTP-загрузку, как это было реализовано в таких приложениях, как NetAnts, ReGet и других из эпохи модемов dial-up. Однако нет гарантии, что многодиапазонная загрузка может быть быстрее обычной из-за различных сетевых политик и задействованных серверов.

Итак, все в конце концов. Вам определенно нужно собирать метрики в вашем приложении: Какая самая медленная операция? А затем перепроектировать его, чтобы получить большую скорость.

решение2

Как узнать максимальное количество потоков, которые я могу использовать?

Intel Core Duo имеет 2 потока, поскольку имеет 2-ядерный однопоточный процессор. Каждое ядро ​​имеет возможность одного потока.

Но если он может поддерживать многопоточность, сколько потоков он может поддерживать и повлияет ли использование слишком большого количества потоков на производительность?

Поддерживает 2 потока.

поэтому я думаю, что, возможно, мой процессор может поддерживать до 2 потоков, а последующее увеличение количества потоков будет иметь незначительный эффект.

Он не способен обрабатывать более 2 потоков. Ваше многопоточное приложение будет иметь только два потока, поскольку вы можете генерировать только 2 потока из-за оборудования.

Связанный контент