Статистические показатели зависимости временной эффективности алгоритмов от кэширования данных

УДК 004.2

В.И. ШИНКАРЕНКО

СТАТИСТИЧЕСКИЕ ПОКАЗАТЕЛИ ЗАВИСИМОСТИ ВРЕМЕННОЙ ЭФФЕКТИВНОСТИ АЛГОРИТМОВ ОТ КЭШИРОВАНИЯ ДАННЫХ

Abstract: The problem of decreasing of time's efficiency of algorithms, when volume of processing data exceeds the

size of cache memory is considered. That is the cache shortage effect. The statistical indexes for the estimation of this effect are offered. The advantages of these indexes are shown. The special cases of cache shortage effect are considered at processing different type's data.

Key words: algorithm, time's efficiency, caching data, cache shortage effect, statistical index.

Анотація: Розглядається проблема зниження часової ефективності алгоритмів при перевищенні обсягом даних, що обробляються, розміру кеш-пам'яті ЕОМ - ефекту нестатку кешу. Запропоновані статистичні показники оцінки цього ефекту. Наведені переваги даних показників над потенційними іншими. Розглянуті окремі випадки прояву ефекту нестатку кешу при обробці даних різних типів.

Ключові слова: алгоритм, часова ефективність, кешування, ефект нестатку кешу, статистичний показник.

Аннотация: Рассматривается проблема снижения временной эффективности алгоритмов при превышении объемом обрабатываемых данных размера кэш-памяти ЭВМ - эффекта недостатка кэша. Предложены статистические показатели оценки этого эффекта. Показаны преимущества данных показателей. Рассмотрены частные случаи проявления эффекта недостатка кэша при обработке данных разного типа.

Ключевые слова: алгоритм, временная эффективность, кэширование, эффект недостатка кэша, статистический показатель.

1. Введение

Решение задач оценки эффективности алгоритмов способствует повышению качества разрабатываемого и эффективности использования разработанного программного обеспечения. Этой проблеме уделяется серьёзное внимание многими исследователями [1-6 и др.].

Одним из направлений таких исследований является оценка эффективности системы "алгоритм - исполнительное устройство".

В [7] исследовалась одна из частных задач - эффект снижения временной эффективности алгоритмов при объемах данных, обрабатываемых алгоритмами, превышающими размер кэша. Он связан с увеличением количества промахов в кэше [В] или (иначе) снижением степени кэширования [7]. Для краткости дальнейшего изложения назовем этот эффект эффектом недостатка кэша.

Для принятия обоснованного решения при подборе алгоритма или разработке нового, при выборе архитектуры ЭВМ с соответствующими модификациями под конкретное программное обеспечение необходимо наличие количественных показателей влияния архитектуры ЭВМ на эффективность алгоритма и методов их определения.

2. Качественные проявления эффекта недостатка кэша

На примере алгоритмов сортировки в [7] показано, что зависимость времени выполнения алгоритмов от количества элементов обрабатываемых данных t(n) является кусочно-гладкой с изломом в точке, соответствующей размеру кэша. Для алгоритмов с вычислительной сложностью 0(п2) и 0(п 1п(п)) эти зависимости имеют вид (1) или (2) соответственно

Га,п 1п(п) + Ъ,п + с, при п <= п0

т=1 ,

[ а2 п 1п(п) + Ъ2 п + с2 при п > п0 где а{, Ъ,с{ - коэффициенты, п0 - количество элементов массива, соответствующее точке изменения зависимости. Для случая однородных данных п0 »Ы0/1Э, где Ы0 - объем данных, близкий к размеру кэша, 1Э - размер элементов данных.

В общем виде для алгоритмов обработки однородных данных

Г /, (п) при п <= п0

t

[ /2

) при1' <= Ы ,

л) 1 Ш,) при!а > ^0

где - объем обрабатываемых данных.

Эффект недостатка кэша проявляется в том, что при ЬА > Ь0 /2(ЬЛ) > /г(Ьй) . Задача заключается в количественной оценке снижения временной эффективности алгоритмов при

А1 > ^0.

3. Методика численных экспериментов

Для определения показателей эффекта недостатка кэша необходимо знать зависимость вида (3). Параметры зависимости (3) зависят как от алгоритмов, так и от конструктивных особенностей ЭВМ. Используется статистический подход к их определению.

Рассмотрим методику численных экспериментов на примере алгоритмов сортировки. Они являются репрезентативными представителями алгоритмов обработки больших объемов данных. Во избежание разночтений и подробных спецификаций самих алгоритмов выбраны алгоритмы сортировки, приведенные Н. Виртом в [1], с идентичными текстами программ на ПАСКАЛе: А, -быстрая сортировка [1, с. 99]; А2 - пирамидальная сортировка [1, с. 95]; А3 - сортировка простым включением [1, с. 79]; А4 - Шейкер-сортировка [1, с. 86]; А5 - сортировка простым выбором [1, с. 82]; А6 - сортировка пузырьком [1, с. 84] минимально модифицированная с отслеживанием момента завершения; А7 - сортировка бинарным включением [1, с. 80]; А8 - сортировка Шелла [1,

с. 99] с рекомендованной Д. Кнутом последовательностью приращений 1, 3, 7, 15, 31.

Экспериментальная база с технической стороны состояла из 8 компьютеров различной конфигурации, различающихся объемом кэш-памяти, частотой процессора, шины и другими техническими характеристиками. Приведем размеры кэш-памяти данных уровней Ы и Ь2. На ЭВМ С,, С2 - 16/256, С3 - 8/256, С4, С5 - 8/512, С6 - 16/1024, С7 - 64/64 и С8 - 64/256 КЬ

(более подробная спецификация ЭВМ представлена в [7]).

Эксперименты выполнялись в МБ РОБ 6.22, что исключает влияние многозадачности операционных систем.

Программа транслировалась в среде Ре!рЫ 7.0. Для выполнения в РОБ использовалась программа WDOБX (М. Типач), конвертирующая ЕХЕ модуль из формата РЕ (МпЬошэ) в формат М7 (РОБ) с заменой соответствующих функций из системных библиотек.

Время конкретного выполнения программы замерялось в тактах процессора путем снятия значений регистра счетчика времени. Перед каждым выполнением алгоритмов кэш-память очищалась интенсивной работой с большим посторонним массивом данных и процессорной командой очистки кэша WBINVD.

Экспериментальные значения ^п) определялись в 64 точках с постоянным шагом п в

интервале (0,2ЫК), где ЫК - размер кэша. При каждом п вычислялось среднее из 9 значений

экспериментальных данных, полученных при различных начальных заполнениях массивов

случайными числами. Параметры а1, Ъ, ci и п0 зависимости (1) или (2) определялись методом

наименьших квадратов. Вид зависимости выбирался в соответствии с вычислительной сложностью алгоритма.

4. Количественная оценка эффекта недостатка кэша

Так как эффект недостатка кэша проявляется тем, что зависимость t (п) в некоторой точке имеет излом, естественно, что количественные показатели должны учитывать степень излома.

Можно представить несколько таких показателей, например, изменение угла наклона кривой в точке п0 (5):

ф t '

ф =------

Г

Однако возникают сложности при их применении. Это и сложность интерпретации значений показателей, и сложность практического применения (необходимо знать значения, при которых эти показатели являются удовлетворительными [10]), а также чувствительности к статистическим результатам численных экспериментов.

Более удачными являются показатели, предложенные далее.

Учитывая тот факт, что размеры кэш-памяти составляют 128Кб, 256Кб, 512Кб, 1Мб, 2Мб, т.е. являются степенным рядом двойки, возникает практический вопрос: насколько улучшится временная эффективность алгоритмов при удвоении размеров кэша?

Предлагаются два следующих показателя:

- £К1 - насколько (на какую часть), в среднем, улучшится время выполнения алгоритма при удвоении кэша, если объем обрабатываемых данных находится в пределах ЫК < Ый < 2 ЫК ;

- $К2 - насколько минимально улучшится время выполнения алгоритма при удвоении кэша, если объем обрабатываемых данных превосходит 2Ык .

п > п

0

п < п

0

Пусть статистическая зависимость времени выполнения алгоритма от объема обрабатываемых данных г(п) имеет вид (3). Экстраполируем функцию /1(п) на отрезок (Ьк, 2ЬК) (рис. 1).

Геометрическую интерпретацию предлагаемых показателей можно представить как

2т

„ 1 (У2(п) - /М)^п

БК1 =------х 100% = т— -----------------х 100%;

к1 о . о 2т ' '

1 2 1 /2(п)^п

т

5к 2 = .Л

К2 А

где т = Ьк / 1Э .

Объем данных

Рис. 1. Геометрическая интерпретация показателей $к1 и 8к 2

Показатели £к1 и 8к2 хорошо согласуются с предложенными ранее [9] показателями

временной эффективности алгоритмов. В [9] рассматривается эксплуатационная характеристика функционально эквивалентных алгоритмов - степень превосходства одного алгоритма над другим. Предложена методика проведения численных экспериментов и расчета соответствующего показателя. Считая, что временная эффективность алгоритма есть функция

Е = /

где V - объем, t - тип, х - значения входных данных соответственно, у - программная среда

функционирования и создания * .ехе файла, г - архитектура ЭВМ. Переменные определены на

множествах V* - возможных значений объема данных, Т* - возможных типов данных, X* -

возможных значений данных, ¥ * - возможных программных сред, Ж* - используемых множеств архитектур ЭВМ, на которых предполагается реализация алгоритмов.

Степень превосходства одного (г -го) алгоритма над другим (] -тым) на ограниченных

множествах, являющихся подмножествами указанных выше множеств V с V*, Т с Т*, X с X*,

, есть

I---------~ fi

SUPV,T,X,Y,Я= — У У У У У } 1 ,

1 N vcV tcT xсX ycY rd max

где N - общее количество слагаемых, f - время выполнения i-го алгоритма.

Показатели SK1 и SK2 являются частным случаем показателя SUPij. Для рассмотренных алгоритмов сортировки исследуемая область = V1XT1XXxY1 и вспомогательные

W2i = VXTXXxY1 x^2i, W3i = V2 XTXXxY xlj,. и W4i = V2 XT1 xXxY x^2i, где V = (LK ,2LK ) , V2 = {2LK } , T = {integer}, X - массивы случайных чисел в диапазоне допустимых значений для типа данных, Y1 ={MS DOS 6.22, Delphi 7 с оптимизацией кода, WDOSX - программа конвертирования EXE-модуля в формат DOS}, ^1i = {С} - один из компьютеров

экспериментальной базы, ^2i = {Сг. с удвоенным кэшем}.

Показатели SK1 и SK 2 можно представить следующим образом:

Sk1( A) W = SUFj

A = A

A = A

Ці

— , (10) W

2i

Sk 2 (A) Wb. = SUFj

A = A W3i

_3i.

A, = A W„.

Естественно, показатели £К1 и 8К2 могут быть определены на другом множестве О. Показатели £К1 и 8К 2 имеют преимущество перед другими (например, (5)) в том, что они:

- имеют простую графическую интерпретацию;

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

- хорошо согласуются с системой статистических показателей временной эффективности алгоритмов.

Значения показателей £К1 и 8К2 для алгоритмов А1...А8 в области О1г. приведены в табл. 1. Таблица 1. Показатели £К1/ $К 2 для алгоритмов А1... А8 в области О1г.

ЭВМ из экспериментальной базы

С1 С2 С3 С4 С5 Сб С7 С8 Среднее

Алгоритм сортировки A1 4/5 2/3 1/1 1/1 1/1 0/0 1/1 2/3 2/2

A2 6/5 11/13 8/12 5/8 11/16 0/0 10/10 8/10 7/9

A3 36/50 53/67 26/38 13/21 39/54 6/10 46/59 12/25 29/41

a4 21/32 33/46 4/6 1/2 9/14 0/0 24/33 4/9 12/18

A5 50/58 46/54 7/10 7/9 14/18 3/5 44/52 36/52 26/32

A6 42/50 52/60 5/6 3/4 14/17 1/1 24/30 7/12 19/23

a7 49/63 51/67 37/51 23/34 50/64 18/29 49/63 15/29 37/50

a8 26/39 57/71 82/90 66/77 88/93 64/76 69/79 40/49 62/72

Среднее 29/38 38/48 21/27 15/20 28/35 12/15 33/41 16/24 24/31

Качественные заключения по проведенным численным экспериментам [7] о том, что, во-первых, различные алгоритмы имеют различную “чувствительность” к изменению размера кэша и, во-вторых, компьютеры различной архитектуры и модификации в различной степени способны изменять временную эффективность совокупности алгоритмов, нашли свое количественное воплощение.

Анализ данных табл. 1 показывает:

- со стороны архитектуры компьютеров - для ЭВМ с большим размером кэша показатели £К1 и 8К2 (табл. 2) ниже, т.е. удвоение размеров кэша в этом случае менее эффективно. Теоретически этого следовало ожидать, так как при увеличении размера кэша больше данных находится в нем и вероятность промаха снижается. С другой стороны эту зависимость можно рассматривать лишь как тенденцию. Как контрпример можно привести результаты по ЭВМ С2 (ЬК =256Кб), где показатели хуже, чем на ЭВМ С7 (ЬК =128Кб);

- со стороны алгоритмов - можно отметить, что алгоритмы по-разному реагируют на удвоение кэша: некоторые алгоритмы значительно ускоряются (А7, А8), некоторые практически на

такое изменение не реагируют (А1з А2).

Таблица 2. Средние показатели £К1 и $К 2 по ЭВМ с одинаковым размером кэш-памяти

Показатель Размер кэш-памяти

128Кб 256Кб 512Кб Ю24Кб

В среднем по алгоритмам Аі ... Аз Sk1 33 26 22 12

Sk 2 41 34 27 15

По алгоритму Аз Sk1 69 51 77 64

Sk 2 79 62 85 76

Показатели £К1 и $К2 построены на основе статистических данных. Возникает естественный вопрос о точности таких показателей.

Выборочно выполнено более 100 повторных (идентичных) экспериментов с последующим расчетом SK1 и SK2. На полученной выборке в 90% случаев расхождения показателей были в пределах 1% и лишь в единичных случаях немногим превышали 5%. Естественно, увеличение количества измерений приведет к повышению точности показателей.

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

5. Проявление эффекта недостатка кэша для алгоритмов с повышенной долей операций обработки данных

Алгоритмы не полностью привязаны к типам данных. Так, алгоритмы сортировки способны отсортировать любую последовательность объектов, принадлежащих множеству с заданным отношением порядка: числа, полиномы, матрицы и т.п., при этом изменится лишь операция

сравнения. Так как £К1 и £К2 зависят от типов данных, для их определения в каждом случае необходимо проводить отдельные численные эксперименты.

Представленные в табл. 1 результаты соответствуют обработке массивов целых чисел. Возникает вопрос: а как проявится эффект недостатка кэша при изменении типа данных? Он будет усиливаться или ослабевать и насколько?

Представим среднестатистическое время выполнения алгоритма как

1 ^ = \/,

{/2(п) = а2(п) + Д (п) п е (т, 2т),

где а - время на выполнение операций обмена данными, Д - время на операции обработки

данных, т = ЬК / 1Э. Отметим, что зависимость (12) - приближенная не только в силу

статистического характера. Время выполнения операций с учетом кэширования и конвейеризации не постоянно и в значительной степени зависит от предыстории выполненных операций.

Рассмотрим частные случаи изменения типа данных, обрабатываемых алгоритмом:

- тип данных изменяется с сохранением размера;

- тип данных изменяется только в части размера (операции обработки данных остаются те

же и в том же количестве);

- при изменении типа данных изменятся их размер и операции обработки данных.

Рассмотрим первый случай по схеме: гипотезы об изменении процесса вычислений и

показателей £К, и £К2  теоретическая проверка гипотезы о изменении показателей

экспериментальное её подтверждение.

Допустим, операции обработки данных будут более длительными. Потери от промахов в кэш при пересылке данных могут в большей степени компенсироваться параллельным выполнением более длительных операций обработки данных. Можно предположить, что показатели £К, и £К2 будут уменьшаться.

Обоснуем это положение теоретически. Пусть тип данных Т, заменен типом данных Т2 (Т, Т2). При этом размер элементов данных Т, и Т2 одинаков, а множества допустимых значений - разные, причем операции обработки данных типа Т2 более длительны.

Оценим разницу А$к 1 .т, = £к, I т,_ £к, I т, .

Обозначим Ft = Jf

mm

Согласно (б) получаем

T dn.

DSK1 |т т = F,T1^ FlT1 _ F,T^ FlT2 .

1 2 F F

1 2Т1 1 2Т2

Чтобы показать, что ASK1| т Tj> 0 , достаточно показать, что F2T 2 > F2T1 и F2T 2 _ F1T 2 < F2T1 _ F1T1 (числитель второй дроби меньше, а знаменатель - больше).

Преобразуем первое неравенство с учетом (12): A2T2 + B2T2 > A2Tх + B2T1 и

B2T2 — B2T1 > A2T1 — A2T2. Истинность последнего следует из того, что снижение времени обмена данными за счет распараллеливания обмена с обработкой возможно лишь в пределах увеличения времени обработки данных.

Второе неравенство преобразуем к виду

A2T 2 + B2T 2 + A1T1 + B1T1 < A1T 2 + B1T 2 + A2T1 + B2T1 .

Оно истинно ввиду того, что A2T1 > A2T2 - за счет большего распараллеливания операций обмена и обработки данных; A1T1 = A1T2 (ax(n)\T = ax(n)\T ) - количество операций обмена при обоих типах данных одинаково, недостатка кэша нет, значит, и время на операции обмена -одинаково; B1T1 = B2T1 (b(n)\T = b2(n)T ) и B1T2 = B2T2 (bin)T = b2(n)Ti) - зависимость

количества операций обработки данных не изменяется на отрезке (0, 2LK) и интеграл в одних пределах будет одинаковым.

Аналогично можно показать, что DSK2\ T T > 0 .

Для алгоритмов сортировки этот случай соответствует, например, замене типа данных integer на тип данных single (4-байтовые вещественные числа) или int64 на double (8-байтовые целые и вещественные числа) в Delphi7.

Выполненные численные эксперименты действительно подтверждают тенденцию к уменьшению SK1 и SK2 при увеличении длительности операций обработки данных.

Усредненные значения SK1 и SK 2 при типах данных TX...T4:

_ 1 Na Nc

SKm

NAnC i=1 J=1

где = V, XТК XXхЧ* X{С} , Ыл - количество алгоритмов (Ыл =8), Ыс - количество ЭВМ

экспериментальной базы (Ыс =8) и т = 1,2 , приведены в табл. 3.

В табл. 3 указаны также средние значения по алгоритмам и компьютерам:

NТ N с

Sk„

NTNC k=1 J=1

где NT - количество типов данных (NT =4) и

na nt

.

*А1УТ г =1 к=1

Отметим высокую корреляцию результатов экспериментов, приведенных в табл. 1 и 3. Пример зависимости времени сортировки от объема данных алгоритма А5 для ЭВМ С, дан

на рис. 2. Степень излома кривых Т, и Т3 больше, чем Т2 и Т4 соответственно.

Таблица 3. Средние значения £К1 и £К2 при изменении типов данных с элементами одинакового размера

Тип данных ТІ ={іп1едег} Т2 ={віпдіе} Т3 ={іп164> Т4 ={ЬоиЫе}

£к,/ £к 2 27/31 13/17 17/23 15/20

Алгоритм А: А2 Аз а4 а5 А6 а7 Л

~К,/ £к2 1/2 6/9 16/23 7/11 20/24 13/14 23/32 45/58

ЭВМ С: С2 Сз С4 С5 С6 С7 С8

& £к 2 25/33 35/45 11/14 7/10 15/19 6/9 22/28 10/14

Объем данных, КЬ

Рис. 2. Зависимость времени сортировки от объема данных типа

Т Т

±,...±4

6. Проявление эффекта недостатка кэша для алгоритмов с повышенной долей операций обмена данными

Рассмотрим случай, когда с изменением типа данных увеличивается размер элементов, а операции обработки данных остаются теми же (Т Т2). В этом случае увеличивается “ценой” промахов в кэш: при каждом промахе в кэш будет загружаться большая порция данных. Следует ожидать роста показателей £К1 и £К2.

Посмотрим теоретически и

экспериментально, что показатели £К действительно растут.

'К1 и 2

Изменение показателя Л£К1| Т Т можно представить так же, как в (13), с тем отличием, Т ёп, где mj = ЬК / 1Э]., 1Э]. - размер элементов типа Tj. Аналогично изменятся

2т^

пределы интегрирования АТ] и ВТ]-.

Так как В1Т1 = В2Т1, В1Т2 = В2Т2, А1Т, = А1Т2 по указанным в предыдущем пункте причинам, преобразуем (13) к виду

Обозначив р = А определим знак Л£ как

ЛБГ

А - А

_ 2Т1 ^ІТІ

А - А

2Т 2 л1Т1

А2Т1 + В2Т1 Ч = А2Т 2 + Я2Т 2

I Т, ) =

А + Я

2Т 2~ ^2Т 2

, Лр = А

р + Лр

-А

-2Т1 2Т 2

ЛЧ = Я 2

Я

Ч + Лд + Лр ч

т

Iх-1 2

и

sign((p + Dp)q — p(q + Dq + Dp)) = sign(Dp(q — p) — Dqp) .

Учитывая, что A2T1 > A1T1 - в силу эффекта недостатка кэша, A2T1 < A2T2 - объем данных, подлежащих пересылке, тот же, а “цена” промахов в кэш выше во втором случае; B1T1 > B1T2 и B2Tj > B2T2 - функция Ь(п) одинаковая и монотонно возрастающая, а интеграл берется на промежутке, смещенном к нулю (т2 < т1 и 2m2 < 2т1) и меньшего размера (2т2 — т2 < 2т1 — т1). Получаем sign(q — p) = sign(Dq) = sign(p) = 1 и sign(Dp) = — 1, откуда

Sign(DSKl \ T1 T2) = —j т.е. DSKl| T T2 < 0 .

Выполнен соответствующий эксперимент. Для алгоритмов сортировки исследовались следующие типы данных:

T5 =record T6 =record T7 =record T8 =record

x:integer; x:integer; x:integer; x:integer;

end; y:array[1..3] of integer; y:array[1..15] of integer; y:array[1..31] of integer;

end; end; end.

Операции обработки в алгоритмах сортировки - операции сравнения по полю x:integer

(одного типа) - абсолютно одинаковые для типов Т5 ... Т8, а операции обмена - пересылка записей разного размера.

В табл. 4 приведены средние значения SK1 и SK2 аналогично (14) - (16) с той разницей,

что Y заменяется на Y2 ={MS DOS 6.22, Delphi 7 без оптимизации кода, WDOSX - программа конвертирования EXE-модуля в формат DOS}.

Приведенные результаты хорошо согласуются с теоретическим прогнозом.

Таблица 4. Средние значения 8К1 и 8К2 при изменении типов данных с элементами переменного размера

Тип данных Т5

Ski/ Sk 2 14/18 19/25 2б/ЗЗ 3G/38

Алгоритм Al A, Лз л4 A5 A6 A7 a8

~Kl/ Sk 2 3/4 9/14 22/31 Ю/15 5G/56 2G/24 24/34 39/53

ЭВМ Cl C, Cз C4 C5 C6 C7 C8

‘Ski/ Sk , 29/37 35/44 18/24 14/19 25/32 12/16 26/33 19/25

Отметим, что типы Ти Т5 практически идентичны в том плане, что транслятор РеірИі 7 для

операций пересылки и сравнения строит абсолютно идентичные коды. Отличие данных, приведенных в табл. 3 и 4, состоит в оптимизации исследуемого кода во втором случае.

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

Скорее всего, эта закономерность должна проявляться в большинстве случаев для алгоритмов обработки больших объемов данных. Однако теоретически подтвердить это не удалось, а целенаправленные эксперименты не проводились.

На основании результатов первых двух случаев прогнозы относительно изменения показателей 8К1 и 8К2 можно делать в случаях:

- снижения длительности операций обработки данных и увеличения размеров данных;

- повышения длительности операций обработки данных и уменьшения размеров данных.

В остальных двух случаях необходимо проведение численных экспериментов.

7. Выводы

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

О значении эффекта недостатка кэша говорит тот факт, что при обработке сравнительно небольших объемов данных (порядка нескольких мегабайт) удвоение кэша в некоторых случаях может позволить снизить время выполнения алгоритмов в 4 ... 4,5 раза (8К1 » 80. ..90%).

Выполненные исследования эффекта недостатка кэша при различных типах данных позволяют избегать дополнительных исследований при известных 8К1 и 8К2 для некоторого типа данных. Кроме того, эти исследования, согласуясь с теоретическими результатами, подтверждают достоверность оценок показателей 8К1 и 8К2.

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

СПИСОК ЛИТЕРАТУРЫ

1. Кнут Д.Э. Искусство программирования. - М.: Издательский дом «Вильямс», 2000. - Т. 1: Основные алгоритмы. - 720 с.

2. Вирт Н. Алгоритмы + структуры данных = программа. - М.: Мир, 1985. - 406 с.

3. Кормен Т. Алгоритмы: построение и анализ / Т. Кормен, Ч. Лейзерсон, Р. Ривест. - М.: МЦНМО, 2001. -

960 с.

4. Макконелл Дж. Анализ алгоритмов. Вводный курс. - М.: Техносфера, 2002. - 304 с.

5. Глибовець М.М. Основи комп'ютерних алгоритмів. - Київ: Видавничій дім «КМ Академия», 2003. - 452 с.

6. Ахо А. Структуры данных и алгоритмы / А. Ахо, Дж. Хопкрофт, Дж. Ульман. - М.: Издательский дом «Вильямс», 2000. - 384 с.

7. Шинкаренко В.И. Зависимость временной эффективности алгоритмов и программ обработки больших объемов данных от их кэширования // Математичні машини і системи. - 2007. - № 2. - С. 43-55.

8. Касперски К. Техника оптимизации программ. Эффективное использование памяти. - СПб.: БХВ-Петербург, 2003. - 464 с.

9. Шинкаренко В.И. Сравнительный анализ временной эффективности функционально эквивалентных алгоритмов // Проблемы программирования. - 2001. - № 3-4. - С. 31-39.

10. Андон Ф.И. Основы инженерии качества программных систем / Ф.И. Андон, Г.И. Коваль, Т.М. Коротун и др.

- К.: Академпериодика, 2007. - 670 с.

Стаття надійшла до редакції 12.09.2007