Род Стивенс

Книги → Delphi. Готовые алгоритмы → Глава 1. Основные понятия

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

Существует несколько способов минимизации эффектов подкачки. Основной прием - экономное расходование памяти. Помните, что программа не может занять всю физическую память, так как часть ее используется под систему и другие программы. Компьютер с характеристиками из предыдущего примера достаточ­но тяжело работает уже тогда, когда программа занимает 16 из 32 Мб физичес­кой памяти.

Второй способ - написать код так, чтобы программа обращалась к ячейкам фи­зической памяти перед тем, как перейти к другим частям массива. Алгоритм сор­тировки слиянием, описанный в главе 9, манипулирует данными в больших ячей­ках памяти. Ячейки сортируются, а затем объединяются. Организованная работа с памятью сокращает обращения к файлу подкачки.

Алгоритм пирамидальной сортировки, также описанный в главе 9, осуществ­ляет переход от одной части списка к другой случайным образом. При очень боль­ших списках это может приводить к перегрузке памяти. С другой стороны, сорти­ровка слиянием требует большего объема памяти, чем пирамидальная сортировка. Если список достаточно объемный, то при использовании памяти сортировкой сли­янием программа будет обращаться к файлу подкачки.

Резюме

Анализ производительности помогает сравнить различные алгоритмы. Он по­зволяет предсказать, как алгоритмы будут вести себя при различных обстоятель­ствах. Указывая только те части алгоритма, на которые требуется наибольшее вре­мя при выполнении программы, анализ помогает определить, доработка каких участков кода увеличит производительность.

В программировании существует множество компромиссов, которые недопу­стимы в реальных условиях. Один алгоритм может быть быстрее, но только за счет использования огромного объема дополнительной памяти. Другой алгоритм про­ще реализовать и поддерживать, но работать он будет медленнее, чем любой более сложный алгоритм.

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

← предыдущая следующий раздел →

Страницы раздела: 1 2 3 4 5 6 7 8 9 10 11

Публикация компанией Dropbox кода Zulip – средства общения для IT-разработчиков

20.11.2015
Одной из одобрительно встреченных программистами инициатив, реализующихся в рамках акции Hack Week, стала публикация исходного кода приложения Zulip – веб-приложения для общения между собой разработчиков в сфере IT-технологий.

Объединение ОС Android и Chrome

17.11.2015
Слухи об объединении двух крупнейших ОС компании Google, Android и Chrome, гуляют по Интернету уже более 5 лет, но до сих пор этого не случилось, хотя очевидно, что с течением времени эти ОС становятся всё более похожими: так, в последнее время появилось немало Android-устройств, к которым прилагаются клавиатуры, а Chrome OS «научилась» работать с сенсорными экранами.

Конференция Linux Piter 2015

15.11.2015
Уже почти через неделю в Санкт-Петербурге впервые в истории пройдёт конференция, посвящённая проблемам свободного программного обеспечения – Linux Piter 2015.