СКОРОСТНЫЕ СВОЙСТВА АЛГОРИТМОВ СЛОЖЕНИЯ И ВЫЧИТАНИЯ ЦЕЛЫХ ЧИСЕЛ ПРОИЗВОЛЬНОГО РАЗМЕРА
Приведено описание подходов к оценке быстродействия алгоритмов, реализующих операции сложения и вычитания целых чисел произвольной размерности, на основе подсчета числа операций, выполняемых в ходе их обработки. Это позволяет определить границы применимости формы представления “длинных” чисел в виде одномерных массивов, в которых каждая цифра занимает один байт.
Авторы
Тэги
Тематические рубрики
Предметные рубрики
В этом же номере:
Резюме по документу**
С и л а н т ь е в а
СКОРОСТНЫЕ СВОЙСТВА АЛГОРИТМОВ
СЛОЖЕНИЯ И ВЫЧИТАНИЯ ЦЕЛЫХ ЧИСЕЛ
ПРОИЗВОЛЬНОГО РАЗМЕРА
Приведено описание подходов к оценке быстродействия алгоритмов,
реализующих операции сложения и вычитания целых чисел
произвольной размерности, на основе подсчета числа операций,
выполняемых в ходе их обработки. <...> К числу таких операций относятся операции сложения
и вычитания целых чисел произвольного размера. <...> Для представления целых чисел произвольного размера можно использовать
битовую модель из нескольких байт, учитывая при сложении
или вычитании возникающий особый характер переноса бит как
внутри байт, так и между байтами. <...> Ниже приведена программа AI03, в которой
функции Align( ) и Align2( ) выполняют выравнивание количества
цифр в двух числовых массивах, дополняя нули в старших разрядах
числа с меньшим количеством цифр:
// Program AI03 (Win32)
// Выравнивание байтовых чисел в обратном порядке
40
ISSN 0236-3933. <...> На первом этапе выполняется инструкция
int k = nu – nv, в которой две операции (из перечня машинных
команд сложения, вычитания, загрузки, сохранения и сравнения) вычитание
‘–‘ и сохранение ‘=’. <...> Объявление функции BinaryAlign( ) содержит модификатор
inline, который реализуется компилятором как непосредственная
подстановка тела функции, а не вызов с параметрами:
WAlign2
2 = 2 + A. <...> На выполнение инструкции цикла for (intj = nz 1; j < n1;
j + +)z[j] = 0 приходится две операции для int j = nz 1, одна
операция j < n1, и на каждой итерации выполняются: одна операция:
проверки условия ‘<’, две операции на увеличение и запоминание
индекса j + +, две операции на определение адреса элемента z[j] и
запоминания 0:
WAlign
3 = 3 +
Если выравнивать байтовый массив числа не следует, то n = nz. <...> Анализ быстродействия
данного этапа полностью совпадает с оценкой WAlign2
2
WAlign2
Итак, функция Align2( ) делает минимальное количество операций,
3 = 5n 3.
когда выравнивание не выполняется. <...> Максимальное количество операций
наступает, когда число из одной цифры дополняется в старших
разрядах <...>
** - вычисляется автоматически, возможны погрешности
Похожие документы: