Главная Случайная страница


Полезное:

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


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Многоканальное слияние





Если "узким местом" является обмен данными между основной и вторичной па­мятью, возможно, удалось бы сэкономить время за счет увеличения числа каналов обмена данными. Допустим, что в нашей системе имеется дисководов, каждый из которых имеет собственный канал доступа к основной памяти. Мы могли бы размес­тить на т дисководах т файлов (f1, f2, … fm), организованных в виде серий длины k. Тогда можно прочитать т серий, по одной из каждого файла, и объединить их в одну серию длиной mk. Эта серия помещается в один из т выходных файлов (g1t g2,..., gm), каждый из которых получает по очереди ту или иную серию.

Процесс слияния в основной памяти можно выполнить за O(log т) шагов на одну запись, если мы организуем т записей-кандидатов, т.е. наименьших на данный мо­мент невыбранных записей из каждого файла, в виде частично упорядоченного дере­ва или другой структуры данных, которая поддерживает операторы INSERT и DELETEMIN, выполняемые над очередями с приоритетами за время порядка O(logn). Чтобы выбрать из очереди с приоритетами запись с наименьшим ключом, надо выполнить оператор DELETEMIN, а затем вставить (оператор INSERT) в очередь с приоритетами следующую запись из файла-победителя в качестве замены вы­бранной записи.

Если у нас имеется п записей, а длина серий после каждого прохода умно­жается на т, тогда после i проходов серии будут иметь длину тi. Если тi > п, т.е. после t = logm nпроходов, весь список будет отсортирован. Так как logm n = log2 n / log2m, то "коэффициент экономии" (по количеству считываний каж­дой записи) составляет log2m. Более того, если т — количество дисководов, исполь­зуемых для входных файлов, и т дисководов используются для вывода, мы можем обрабатывать данные в т раз быстрее, чем при наличии лишь одного дисковода для ввода и одного дисковода для вывода, и в раз быстрее, чем при наличии лишь одного дисковода для ввода и вывода (входные и выходные файлы хранятся на од­ном диске). К сожалению, бесконечное увеличение т не приводит к ускорению обра­ботки по “ закону коэффициента log m “. Причина заключается в том, что при доста­точно больших значениях m время, необходимое для слияния в основной памяти (которое растет фактически пропорционально log m), превосходит время, требующееся для считывания или записи данных. Начиная с этого момента дальнейшее увели­чение т ведет, по сути, к увеличению полного времени обработки данных, поскольку "узким местом" системы становятся вычисления в основной памяти.







Date: 2016-08-30; view: 297; Нарушение авторских прав



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию