Статистическая разница между обычной многопоточностью и исполнителями с многопоточностью - PullRequest
0 голосов
/ 15 марта 2012

Может ли кто-нибудь подсказать мне, как я могу показать статистическую разницу между нормальным

многопоточностью и исполнителями с многопоточностью, например, в виде времени процессора, общего потока

времени пользователя, использования памятии так далее

Любые предложения будут полезны.

Ответы [ 2 ]

4 голосов
/ 15 марта 2012

Я не уверен, что понимаю термин «статистическая разница». Я полагаю, что вы спрашиваете об использовании исполнителей и API с простым потоком и в чем разница между ними.

Во-первых, исполнители основаны на потоках; это просто еще один слой поверх них. Нет магии. Простой многопоточный API-интерфейс позволяет создавать многопоточные приложения и управлять ими, но требует работы с подробными сведениями о синхронизации потоков, пуле, передаче данных между потоками и т. Д.

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

1 голос
/ 15 марта 2012

Проблема в том, что ваш вопрос задает что-то, что имеет мало смысла.

Прежде чем вы сможете осмысленно говорить о "статистической разнице" между вещами, вы должны иметь какой-то способ их количественного определения и измерения.И прежде чем это произойдет, у вас есть четкое утверждение о том, что вы пытаетесь измерить / измерить.

То, что вы спрашиваете, не удовлетворяет ни одному из этих критериев.


Предполагая, что у вас естьосмысленный вопрос ...

На практическом уровне обычный способ, которым люди пытаются количественно оценить эффект чего-то подобного (используя пулы потоков вместо создания новых потоков), заключается в разработке приложения для тестирования производительности с вариантами, соответствующимидве стратегии.Затем измерьте относительную производительность.Но у этого есть много проблем.

Самая фундаментальная проблема в том, что вы на самом деле измеряете, - это эффект двух стратегий для этого и только этого эталонного теста.Обобщение от эталона до других приложений очень сложно.Проблема в том, что в проекте любого эталона есть «скрытые параметры».Например, количество процессоров, количество потоков, продолжительность и сложность задач и так далее.Не имея хорошего представления о том, что это за параметры, сложно разработать эталон для их учета.И даже если вам удастся выяснить, что такое скрытые параметры и количественно оценить их влияние, у вас возникнет проблема, заключающаяся в том, что вы не можете понять, какими будут эти параметры в реальном (более сложном) приложении.В конечном итоге вы получите модель, которая не может дать количественные ответы на реальные проблемы.(Компьютеры не имеют ничего общего с законом тяготения Ньютона.)

...