Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
книги хакеры / Питер_Гудлиф_Ремесло_программиста_Практика_написания_хорошего_кода.pdf
Скачиваний:
15
Добавлен:
19.04.2024
Размер:
9.23 Mб
Скачать

 

 

 

 

hang

e

 

 

 

 

 

 

C

 

E

 

 

 

X

 

 

 

 

 

-

 

 

 

 

 

d

 

F

 

 

 

 

 

 

t

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

to

 

 

 

 

w Click

 

 

 

278m

 

 

 

 

w

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

.

 

 

 

 

 

.c

 

 

p

 

 

 

 

g

 

 

 

 

df

 

 

n

e

 

 

 

 

-xcha

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

Глава 11. Жажда скоростиClick

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

.c

 

 

.

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

наборов. Тем самым вы убережетесь от оптимизации, нацеленной на отдельные необычные наборы входных данных.

Тщательно отберите входные данные для профилирования, с тем чтобы они отражали реальный мир. В противном случае может оказаться, что вы оптимизируете те части программы, которые в обычных условиях не вы& полняются.

Несмотря на то что профайлер (или аналогичные средства) может по% служить хорошей отправной точкой для выбора объектов оптимиза% ции, можно легко упустить ряд фундаментальных проблем. Профай% лер показывает лишь, как выполняется код в текущей реализации, и способствует усовершенствованиям только на уровне кода. Стоит взглянуть на общие проблемы проекта. Неудовлетворительная произ% водительность может быть обусловлена не особенностями реализации отдельной функции, но более глубокими ошибками проектирования. В таком случае решение проблемы потребует дополнительных усилий. Это показывает, насколько важно правильно спроектировать код с са% мого начала с учетом требуемых показателей эффективности.

Не ограничивайтесь профайлером при поиске причин недостаточной эффек& тивности программы; они могут оказаться более глубокими.

Этот этап покажет вам, какие участки кода следует исправить, чтобы добиться наибольшего повышения эффективности. Займемся этими участками.

Тестирование кода

Мы выделили три этапа тестирования в процедуре оптимизации. Для каждого участка кода (объекта оптимизации) мы: 1) проверим его эф% фективность, прежде чем начать модификацию, 2) убедимся, что код корректно работает после оптимизации, и 3) протестируем его эффек% тивность после модификации.

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

Эффективность кода нужно проверять до и после модификации, чтобы убедиться в том, что ваши модификации возымели эффект, притом по% ложительный; иногда «оптимизация» невольно оказывается деграда# цией. Хронометраж можно осуществить с помощью профайлера или самодельных измерительных инструментов.

Обязательно проведите измерения до и после оптимизации.