Сколько потоков можно запустить при использовании процессора 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 потоков, тогда любые другие потоки после этого будут иметь незначительный эффект.
2 ответа
В вашем вопросе есть несколько ложных предположений, поэтому позвольте мне уточнить здесь:
- Многопоточность возможна даже на одноядерных процессорах. Выполнение просто разделяется во времени, поэтому в любой момент времени у вас есть 1 активный поток, однако общее выполнение потоков выполняется параллельно.
- Многопоточность не эквивалентна ускорению. Если многопоточное приложение наивно разработано, оно всегда медленнее однопоточного приложения в десятки или даже сотни раз.
- Загрузка из внешних сетей в 99% случаев не зависит от многопоточности. Возможно, стоит взглянуть на загрузку HTTP по нескольким диапазонам, как это было реализовано в таких приложениях, как NetAnts, ReGet и других, начиная с эпохи коммутируемых модемов. Однако нет гарантии, что многодиапазонная загрузка может быть быстрее, чем обычная, из-за различных сетевых политик и задействованных серверов.
Итак, в конце концов. Вы определенно должны собрать показатели в своем приложении: что такое медленная операция? И затем перепроектируйте это, чтобы получить больше скорости.
Как я могу узнать максимальное количество потоков, которые я могу использовать?
Intel Core Duo имеет 2 потока, потому что он имеет двухъядерный процессор с одним ядром. Каждое ядро имеет возможность одного потока.
Но если он может поддерживать многопоточность, сколько потоков он может поддерживать и повлияет ли это на производительность, если я использую слишком много потоков?
Поддерживает 2 потока.
так что я думаю, что мой процессор может поддерживать до 2 потоков, тогда любые другие потоки после этого будут иметь незначительный эффект.
Он не способен обрабатывать более 2 потоков. Ваше многопоточное приложение будет иметь только два потока, поскольку вы можете создавать только два потока из-за аппаратного обеспечения.