пятница, 22 июня 2007 г.

Производительность из ничего

Вчера отыскал забавную программу под названием SpeedBalls от InqSoft, предназначенную для ускорения работы приложения, чье окно в настоящий момент активно. Идея проста, но в то же время красива. Программа отслеживает, какое приложение владеет активным окном, и повышает его приоритет до HIGH (высокий) или REALTIME (реального времени). При этом, как говорит автор, это самое приложение должно вроде бы работать быстрее за счет отбирания процессорного времени у "неактивных" задач. Возможно, для непрограммиста это звучит диковато, но подход этот вполне легальный и не относится к "подкручиванию" операционной системы всякими твикерами, после чего приходится все сносить и переустанавливать заново.
InqSoft SpeedBallsМне это показалось как-то неправдоподобно, и я начал проводить тесты, устанавливая для начала приоритет HIGH. Сначала я пытался замерять время выполнения сложных преобразований в Paint.NET. Применение эффекта "Frosted Glass" при выключенном SpeedBalls занимает 10 секунд, при включенном - 9 секунд. Как-то слабенько, подумалось мне. Потом додумался привлечь WinRAR. Распаковка 100-мегабайтного архива при выключенном SpeedBalls - 14 секунд, при включенном - 6 секунд. Ого, вот это уже существенно!
А потом я совершил большую ошибку - решил провести те же тесты с приоритетом REALTIME. Запомните: никогда, никогда не устанавливайте приоритет REALTIME никакому приложению! Windows - не операционная система реального времени, и любой активное окно постоянно что-то делает. Например, любое движение мыши вызывает отправку соответствующего сообщения окну. В результате приложение, получившее приоритет REALTIME, практически полностью вешает систему. Выводя Paint.NET из ступора в течение 5 минут, я решил дальнейшие эксперименты не проводить. Еще раз повторю - забудьте про REALTIME!
Интерфейс программы весьма прост - два языка, минимум настроек, возможность запуска вместе с системой и сворачивание в трей. Активация и отключение изменения приоритета выполняется по выбранной комбинации клавиш, по умолчанию Win+Backspace.
Такая программа может быть полезной при выполнении каких-то дорогостоящих операций вроде архивирования, кодирования видео или (быть может) в играх. В остальных случаях увеличения производительности будет немного, зато все приложения, кроме активного, будут работать медленнее.
Программистам, быть может, будет интересно, что программа написана целиком на ассемблере, и поставляется вместе с исходниками.

5 коммент.:

Анонимный комментирует...

Окошки на асме...
Судя по описанию там WinAPI достаточно. Но идея интересная )

Все-таки гугл не хочет меня запоминать.

Flegmatic комментирует...

Ассемблер в данном случае - всего лишь язык, обеспечивающий доступ к WinAPI.

Может у тебя с куками чего?

Анонимный комментирует...

ИМХО, практически бесполезная программа, ибо приоритет можно повысить с помощью стандартного диспетчера задач. РАР я всегда выполняю как фоновую задачу, так он работает быстрее (по крайней мере так кажется, хотя к этому есть и предпосылки, т.к. приходится обрабатывать меньше сообщений и всяких перересовок), чем когда он на рабочем столе активным окошком.
Для кодирования видео, я бы вообще выгружал все "лишнее" - для слабых машин, а на достаточно мощных этого практически не требуется.

Flegmatic комментирует...

Попробую немного возразить.
1. Да, диспетчером задач можно повысить приоритет, но это надо делать вручную. Здесь же все автоматически.
2. WinRAR на упомянутом мной архиве в 100 Мб в фоновом режиме работает те же 14 секунд.
3. Даже если много чего повыгружать, все равно приложений останется куча. Даже если они практически ничего не делают, то все равно выбираются диспетчером на выполнение - на это тратится время, ведь переключение процессов - недешевая операция.

Unknown комментирует...

У конторы есть еще «редактор визуальных батников» — тоже рекомендую попиарить (я уже пиарил на форуме помнится).У меня эти батники автоматизировали аудиозапись хорошо. Мне только требовалось комп включить. Контора вообще хорошая.

Идея же не нова, но слабо полезная имхо. А на реалтайме можно и БСОД по таймеру схватить — уже хватал на той же записи =)