Система Turbo Profiler фирмы Borland
- Название:Система Turbo Profiler фирмы Borland
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:неизвестен
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Система Turbo Profiler фирмы Borland краткое содержание
Система Turbo Profiler фирмы Borland - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
* Оптимизировать циклы, процедуры и выражения.
Модификация структур данных.
Используйте более изощренные алгоритмы и структуры данных. В общем случае на случайно распределенных значениях алгоритм внутренней сортировки работает быстрее чем алгоритм, реализующий метод пузырька. С другими примерами вы можете ознакомиться просмотрев соответствующую литературу по структурам данных и алгоритмам.
Для того чтобы вычисления производились более быстро необходимо, по возможности, использовать целые числа вместо вещественных, например в случае работы с окнами и строками в подпрограммах экранного ввода/вывода и графических подпрограммах. Используйте числа типа long integer во всех случаях, не требующих точности вещественных чисел.
Вместо того, чтобы сортировать массив, состоящий из строк текста, используйте массив указателей на строки текста. Весь доступ к тексту осуществляйте при помощи этих указателей. Для того, чтобы произвести сортировку строк или вставить какую-либо строку необходимо только лишь переупорядочить указатели, не затрагивая при этом самого текста.
Используйте заранее вычисленные данные.
Заранее постройте таблицу значений функции синус, а затем просто пользуйтесь готовыми значениями, доставая их из таблицы по индексу.
Производите буферизацию доступа к часто используемым данным.
При чтении символов из файла на низком уровне в С происходит буферизация этого процесса. Функция getc считывает с диска в буфер целый сектор, но в качестве своего значения возвращает только лишь первый символ из этого буфера. Следующий вызов функции getc возвращает следующий из символов, находящихся в буфере, и это происходит до тех пор пока буфер не будет исчерпан. Когда же это произойдет, getc считывает с диска следующий сектор. Паскалевская подпрограмма Read работает аналогичным образом.
В системе Turbo Pascal имеется также подпрограмма SetTextBuff, позволяющая сократить количество обращений к диску. С помощью этой подпрограммы Вы можете создать в памяти текстовый буфер большого размера, позволяющий сократить количество обращений к диску необходимых для подкачки текста.
В интерактивном редакторе или в программе работы с дампами файлов, Вы можете завести несколько буферов и обновлять их содержимое во время ожидания пользовательского ввода. Также Вы должны иметь два буфера в одном из которых содержится начало файла с которым происходит работа, а в другом его конец, причем данные находящиеся в каждом из этих буферов должны занимать весь экран. Еще в двух буферах должны храниться данные, расположенные в рассматриваемом файле перед данными, находящимися на экране в данный момент, а также те данные, которые следуют за ними, причем содержимое этих буферов должно также заполнять по целому экрану. В результате всего вышеперечисленного, при выполнении наиболее часто используемых команд перемещения по файлу обновление экрана будет происходить без обращения к диску.
Организуйте вычисления рациональным образом.
Упорядочивайте условные выражения и операторы выбора таким образом, чтобы первыми вычислялись те условия, которые с большей вероятностью могут дать положительный результат.
В случае справочных таблиц большого размера, вычисляйте элементы этих таблиц только в случае потребности в них, и используйте дополнительный массив для хранения уже вычисленных значений.
Длину строки необходимо вычислять только в случае, когда требуется произвести переформатирование, а отнюдь не при каждом чтении новой строки из файла.
Оптимизируйте имеющийся текст программы.
Циклы, процедуры и выражения всегда являются потенциально улучшаемыми.
Циклы.
* При каждой возможности выносите вычисления за пределы циклов. Повторяющиеся вычисления одного и того же значения не являются необходимыми и, к тому же, отнимают время;
* Запоминайте результаты вычислений, требующих большого количества времени (при помощи команды Statistics|Save (Статистика|Сохранить);.
Например, в случае работы с массивами подпрограмме использующей алгоритм типа «вставки», не приходится пытаться поменять местами попарно все элементы. Если Вы запомните значение первого элемента, внутренний цикл располагает каждый последующий элемент слева от него в случае, когда этот элемент меньше исходного, в противном же случае запомненный элемент помещается в текущую позицию. Эта процедура заменяет дорогостоящие операции попарной перестановки элементов массива на алгоритм традиционного типа, использующий вставку.
* Если в двух циклах выполняются одни и те же операции над одинаковыми данными, то следует объединить эти циклы в один;
* По возможности заменяйте несколько выражений проверяющих условие окончания цикла на одно.
Например можно добавить дополнительный элемент в конец массива и присвоить ему некоторое специальное значение, которое вызовет завершение цикла. (Именно таким образом в С обрабатываются текстовые строки).
* Разворачивайте циклы.
Например, выражение вида:
for (x = 0; x
< 4; x++) y += items[x];
можно заменить на следующее выражение:
y += items[0];
y += items[1];
y += items[2];
y += items[3];
Подпрограммы.
* Оформите наиболее часто вызываемые подпрограммы как подставляемые, или замените их определения подставляемыми макроопределениями.
* Используйте сопрограммы для реализации многопроходных алгоритмов обработки больших файлов. (Посмотрите на функции С setjmp и longjmp). (В Паскале ознакомтесь с процедурными типами (procedural types), которые позволяют Вам обращаться с подпрограммами и функциями как с переменными с целью выполнения сопрограмм).
* Перепишите рекурсивные подпрограммы таким образом, чтобы они пользовались стеком данных, управление которым происходит явным образом.
Выражения.
* Используйте инициализацию переменных, происходящую на этапе компиляции.
* При одном вызове функции возвращайте несколько результатов. Например, можно написать подпрограммы одновременно возвращающие синус и косинус, частное и остаток, или пару координат экрана х-у.
* Заменяйте доступ по индексу массива доступом при помощи операции разыменования указателя.
Резюме.
В данной главе мы описали большую часть из тех вещей, которые необходимо иметь в виду перед началом, во время и после завершения сеанса профилирования. Мы объяснили каким образом Вам следует подготовить вашу программу и самого себя к сеансу профилирования; мы дали Вам ряд советов и предостережений, относящихся к самому процессу профилирования; так же мы изложили некоторые соображения относительно применения результатов профилирования. В следующей главе мы опишем все меню и блоки диалога среды системы Turbo Profiler.
Читать дальшеИнтервал:
Закладка: