Эта идея проекта Java практична? (Планировщик ниток и оптимизация рома частиц)

StackOverflow https://stackoverflow.com/questions/3421415

Вопрос

На многоквартируемой коробке решения планировщиков нитей Java довольно произвольны, она присваивает приоритеты потоков, основанные на том, когда резьба была создана, из которого он был создан и т. Д.

Идея состоит в том, чтобы запустить процесс настройки с использованием PSO, который будет случайным образом устанавливать приоритеты потоков, а затем в конечном итоге достичь оптимальных приоритетов, когда функция фитнеса является общее время выполнения программы?

Конечно, будут более параметры, такие как приоритеты будут переходить во время выполнения, чтобы найти оптимальную приоритетную функцию.

Насколько практично интересно, звучит идея? и любые предложения. Просто в некотором фоновом режиме, я уже несколько лет программировал в Java / C / C ++ с различными проектами, другая альтернатива будет делать планировщик потоков на основе этого в C, где планировщик потоков по умолчанию - это ОС.

Это было полезно?

Решение

Лучший способ узнать - начать проект с открытым исходным кодом и увидеть использование / реакцию людей.

Это звучит очень интересно для меня - но я лично Не нахожу это очень полезным. Возможно, мы просто не в точке, где одновременное программирование является как распространенное и легко, как могло бы быть.

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

Из моего личного субъективного опыта, большинство проблем с производительностью в программном обеспечении могут быть решены путем улучшения одной зоны узкой узки, которая составляет 90% от замедления. Этот оптимизатор может помочь найти это. Я не уверен, насколько стратегия планирования может улучшить общую производительность.

Не обескуражено, хотя! Я просто разговариваю из тонкого воздуха. Звучит весело, так почему бы просто не играть с ним все равно :)

Другие советы

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

Проблема в том, что для большинства нетривиальных программ их производительность частично зависит от конкретных данных, с которыми они работают. Даже если вы обнаружите оптимальный способ расписания потоков для одного набора данных, нет абсолютно никакой гарантии, что он улучшит скорость на другой. В большинстве случаев работает то, что будет долгим и трудной оптимизацией каждый раз, когда они хотят сделать, новый выпуск не окажутся за разработкой, если, возможно, для больших усилий вычислений (где программы, вероятно, будут вручную настроить и не написаны в Java в любом случае).

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

Я думаю, что это несколько субъективный вопрос, но в целом нет, не думаю, что это будет работать.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top