среда, 5 мая 2010 г.

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

Это перевод Why does my program run faster if I click and hold the caption bar? Автор: Реймонд Чен.

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

Это странное поведение обычно появляется как результат того, что программа проводит слишком много времени на обновление состояния в интерфейсе пользователя, не уделяя слишком много внимания самой работе (другими словами, программист, её написавший, крупно облажался). Когда вы нажимаете и удерживаете кнопку мыши над заголовком окна, менеджер окон ждёт следующего сообщения от мыши, чтобы определить, выполняете вы щелчок или перетаскивание. Во время этого ожидания перерисовка окна приостановлена.

Вот почему программа работает быстрее: отсутствие прорисовки окна означает, что меньше процессорного времени тратится на вещи, которые всё равно меняются слишком быстро, чтобы вы могли это заметить.

Обновление экрана для каждой итерации в программе обычно не самая удачная идея, потому что итерации циклов проходят быстрее, чем обновляется экран. Обычное правило здесь таково: нет смысла обновлять экран чаще 10 раз в секунду. Усилия, которые вы на это потратите, пропадут впустую.

1 комментарий:

  1. Чаще наоборот наблюдаю такое поведение: зажимаешь заголовок и начинаешь перетаскивать - программа приостанавливает работу, пока не отпустишь

    ОтветитьУдалить

Можно использовать некоторые HTML-теги, например:

<b>Жирный</b>
<i>Курсив</i>
<a href="http://www.example.com/">Ссылка</a>

Вам необязательно регистрироваться для комментирования - для этого просто выберите из списка "Анонимный" (для анонимного комментария) или "Имя/URL" (для указания вашего имени и ссылки на сайт). Все прочие варианты потребуют от вас входа в вашу учётку (поддерживается OpenID).

Пожалуйста, по возможности используйте "Имя/URL" вместо "Анонимный". URL можно просто не указывать.

Ваше сообщение может быть помечено как спам спам-фильтром - не волнуйтесь, оно появится после проверки администратором.