Home (Главная)

Page 37 - Страница 37
Page 37
background image

30

 1

Как всегда я постараюсь давать как можно больше реальных примеров, что-

бы вы смогли убедится в том, что вам не вешают очередную лапшу на уши,

и смогли применить все сказанное на практике.

Начну с законов, которые работают не только в программировании, но

и в реальной жизни. Ну а напоследок я оставлю только то, что может при-
годиться при оптимизации кода.

ЗАКОН № 1

Оптимизировать можно все. Даже там, где вам кажется, что все и так ра-

ботает

 можно сделать еще быстрее.

Это действительно так. И этот закон очень сильно проявляется в програм-
мировании. Идеального кода не существует. Даже простую операцию сло-
жения 2 + 2 тоже можно оптимизировать. Чтобы достичь максимального
результата, нужно действовать последовательно и желательно в том порядке,

в котором описано ниже.

Помните, что любую задачу можно решить хотя бы двумя способами (или

больше), и ваша задача — выбрать наилучший метод, который обеспечит
желаемую производительность и универсальность.

ЗАКОН № 2

Первое, с чего нужно начинать, — это с поиска самых слабых и медленных

мест. Зачем начинать оптимизацию с того, что и так работает достаточно

быстро/ Если вы будете оптимизировать сильные места, то можете нарваться

на неожиданные конфликты. Да и эффект будет минимален.

Тут же я вспоминаю пример из своей собственной жизни. Где-то в 1995 году

меня посетила одна невероятная идея

 написать собственную игру в стиле

Doom. Я не собирался ее делать коммерческой, а хотел только потрениро-

вать свои мозги на сообразительность. Четыре месяца невероятного труда, и
нечто похожее на движок уже было готово. Я создал один голый уровень, по
которому можно было перемещаться, и с чувством гордости побежал по ко-
ридорам.

Никаких монстров, дверей и атрибутики на нем не было, а тормоза ощуща-

лись достаточно значительные. Тут я представил себе, что будет, если доба-

вить монстров и атрибуты, да еще и наделить все это AI.... Вот тут чувство

собственного достоинства поникло. Кому нужен движок, который при раз-
решении 320x200 (тогда это было круто!) в голом виде тормозит со страшной

силой? Вот именно....

Понятное дело, что мой виртуальный мир нужно было оптимизировать.
Целый месяц я бился над кодом и вылизывал каждый оператор моего движка.