Шрифт:
25.2.1. Предсказуемость
• Выделение свободной памяти с помощью операторов
• Исключения (раздел 19.5).
• Оператор
В приложениях с жесткими условиями реального времени эти средства использовать не следует. Проблемы, связанные с операторами
Проблемы с исключениями заключаются в том, что, глядя на конкретный раздел
25.2.2. Принципы
• Первый закон: “Не делай этого!”
• Второй закон (только для экспертов): “Не делай этого пока!”
Перед тем как приступать к оптимизации, следует убедиться в том, что вы понимаете, как работает система. Только когда вы будете уверены в этом, оптимизация станет (или может стать) правильной и надежной. Сосредоточьтесь на алгоритмах и структурах данных. Как только будет запущена первая версия системы, тщательно измерьте ее показатели и настройте как следует. К счастью, часто происходят приятные неожиданности: хороший код иногда работает достаточно быстро и не затрачивает слишком много памяти. Тем не менее не рассчитывайте на это; измеряйте. Неприятные сюрпризы также случаются достаточно часто.
25.2.3. Сохранение работоспособности после сбоя
Представьте себе, что вы должны разработать и реализовать систему, которая не должна выходить из строя. Под словами “не выходить из строя” мы подразумеваем “месяц работать без вмешательства человека”. Какие сбои мы должны предотвратить? Мы можем не беспокоиться о том, что солнце вдруг потухнет или на систему наступит слон. Однако в целом мы не можем предвидеть, что может пойти не так, как надо. Для конкретной системы мы можем и должны выдвигать предположения о наиболее вероятных ошибках. Перечислим типичные примеры.
• Сбой или исчезновение электропитания.
• Вибрация разъема.
• Попадание в систему тяжелого предмета, приводящее к разрушению процессора.
• Падение системы с высоты (от удара диск может быть поврежден).
• Радиоактивное облучение, вызывающее непредсказуемое изменение некоторых значений, записанных в ячейках памяти.