Лет пять-шесть назад рассказывал я студентам об итеративных алгоритмах и о принципе 20/80. В качестве иллюстрации и отвлечения для припомнил одну историю, приключившуюся со знакомым в конце 90-х. Его попросили посмотреть, почему счётная программа работает в разы медленнее, чем должна. Затык оказался в том, что прогресс-бар состояния расчёта обновлялся после каждой итерации. В итоге время обновления прогресс-бара со всеми сопутствующими операциями и перерисовкой окна было сопоставимо со временем расчёта одной итерации. Программист этого просто не заметил — для него во время отладки, на малых размерах задачи и паре десятков итераций, разница в десяток секунд никакой роли не играла. Всё «исправление» свелось к вызову злополучной процедуры ввода-вывода каждую сотую итерацию.
И что же вынесли из лекции студенты? Несколько человек из других групп потом подходили и спрашивали, правда ли я читал лекцию о том, что графический интерфейс тормозит программы, и его нельзя использовать ни при каких условиях.