Технология программирования стр.33

И тем более не следует «платить» за увеличение эффективности снижением технологичности разрабатываемого программного обеспечения. Исключения возможны лишь при очень жестких требованиях и наличии соответствующего контроля за качеством.

Частично проблему эффективности программ решают за программиста компиляторы. Средства оптимизации, используемые компиляторами, делят на две группы:

•    машинно-зависимые, т. е. ориентированные на конкретный машинный язык, выполняют оптимизацию кодов на уровне машинных команд, например, исключение лишних пересылок, использование более эффективных команд и т. п.;

•    машинно-независимые выполняют оптимизацию на уровне входного языка, например, вынесение вычислений константных (независящих от индекса цикла) выражений из циклов и т. п.

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

Способы экономии памяти. Принятие мер по экономии памяти предполагает, что в каких-то случаях эта память неэкономно использовалась. Учитывая, что анализировать имеет смысл только операции размещения данных, существенно влияющие на характеристику эффективности, следует обращать особое внимание на выделение памяти под данные структурных типов (массивов, записей, объектов и т. п.).

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

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

Также следует помнить, что при передаче структурных данных в подпрограмму «по значению» копии этих данных размещаются в стеке. Избежать копирования иногда удается, если передавать данные «по ссылке», но как неизменяемые (описанные const). В последнем случае в стеке размещается только адрес данных, например:

Type Mas.4iv = array [I.. 100] of real; function Summa (Const a:Massiv; ...)...

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

• выносить вычисление константных, т. е. не зависящих от параметров цикла, выражений из циклов;

• избегать «длинных» операций умножения и деления, заменяя их сложением, вычитанием и сдвигами;

•    минимизировать преобразования типов в выражениях;

•    оптимизировать запись условных выражений - исключать лишние проверки;

•    исключать многократные обращения к элементам массивов по индексам (особенно многомерных, так как при вычислении адреса элемента используются операции умножения на значение индексов) - первый раз прочитав из памяти элемент массива, следует запомнить его в скалярной переменной и использовать в нужных местах;

•    избегать использования различных типов в выражении и т. п.

Рассмотрим следующие примеры.

Пример 2.2. Пусть имеется цикл следующей структуры (Pascal):

for y: = 0 to 99 do for x: = 0 to 99 do

a [320*x+y]: = S [k,l];

В этом цикле операции умножения и обращения к элементу S[k] выполняются 10000 раз. Оптимизируем цикл, используя, что 320 = 28 + 26:

skl: =S [k,l];    {выносим обращение к элементу массива из цикла}


⇐ назад к прежней странице | | перейти на следующую страницу ⇒

Читайте также:

AlgoMusic M51 Galaxy - виртуальный инструмент на основе PD-синтеза

Виртуальный инструмент M51 Galaxy позволяет синтезировать "космические" звуки, обладает завораживающим звучанием. Обычно музыканты не очень жалуют инструменты, созданные с помощью SynthEdit. Однако M51, хоть и относится к их числу, действительно очень хорош. Секрет его звучания кроется в оригинальной архитектуре синтеза. На M51 Galaxy распространяется поговорка, что "все новое - это хорошо забытое старое". Идеи, заложенные в M51, уже были успешно реализованы в 80-х годах XX века.

Яркая жизнь с компьютерными программами

На каждом шагу сегодня мы слышим нарекания на современную молодёжь и её бездеятельность. А ведь и правда – ребят кроме компьютера и досконального его знания мало что интересует и беспокоит, даже будучи на шашлыках, они тянут с собой компьютер и включают музыку либо фильмы. Такая зависимость является страшной для развития человечества в целом хотя б потому что все вокруг становятся замкнутыми и променивают реальный мир на виртуальное общение. Раньше, вспоминают люди постарше, у костра играли на гитаре вживую, ездили в горы с палатками, игрались миниатюрными поездами теперь заменённое компьютерными играми и различными программами симуляторами. Возникает закономерный вопрос – так ли вредны эти самые компьютерные программы и для чего они были созданы.

Помоги себе сам

Что может быть обыденней интернета в наши дни? Он стал незаменимой частью жизни всех нас. И это можно понять, ведь с его помощью люди работаю во всевозможных сферах деятельности, является очень эффективным. Но очень часто стоит вопрос о том, с помощью чего лучше всего добиваться лучших результатов и делать это более оперативно и с комфортом.