Cтраница 1
К проверке производительности. [1] |
Разработчик сортировки не должен поддаваться искушению принять какой-либо из методов, описанных в этой книге, как единственный метод сортировки. Разумно всегда исследовать комбинированные методы. Помимо известных комбинаций таких, как быстрая сортировка и просеивание, возможны многие другие, которые могут быть полезны в конкретных ситуациях. [2]
Разработчики сортировки помимо изучения влияния на производительность проектируемой аппаратуры должны думать о совокупности тех конфигураций, которые могут встретиться. Если большой процент пользователей имеет небольшую основную память, и у них нет возможности совмещать чтение-запись-вычисления, то выбор с заменой не может рассматриваться как метод для этапа распределения. Сортировку можно поддерживать лишь на некоторых конкретных устройствах или на некотором минимальном числе устройств, если меньших конфигураций не ожидается. [3]
Разработчик сортировки, используя пакет ввода-вывода целиком, может снизить производительность сортировки тем, что он не сможет выполнять некоторые функции, какие ему следует выполнять в интересах эффективности. [4]
Таблицы времен, публикуемые разработчиком сортировки, можно построить при помощи программы, которая использует некоторый набор формул, а не отслеживает работу сортировки во время ее прогонов. Все временные характеристики сортировки, естественно, являются приблизительными. Качество сценки зависит от изощренности формул временных характеристик и объема учитываемых подробностей. Даже самая лучшая формула статической оценки временных характеристик является источником серьезной ошибки. [5]
Часто размер блока ввода неподвластен разработчику сортировки. Размер этого блока определяет объем памяти, необходимой для хранения вводимых данных, и влияет на пригодность использования буферов при вводе. [6]
Все интерфейсы периода исполнения и предварительной активизации предоставляются разработчику сортировки как часть уже существующей операционной системы, с которой эта сортировка должна работать; либо они могут динамически подключаться в процессе совместного развития ОС и сортировки. [7]
Когда список сортируемых данных слишком велик, чтобы поместиться в основной памяти, забот у разработчика сортировки существенно прибавляется. Проблемы возникают, начиная с написания хорошей подпрограммы и до определения правильного равновесия между программой в целом и всеми сопутствующими характеристиками ввода-вывода, центрального процессора, разбиения на блоки и буферизации, передачи данных между компонентами программы. [8]
Между этими двумя крайностями - крайней необходимостью избежать всяких задержек и полным безразличием ко времени окончания - располагается множество допусков для задержек и большое число случаев, в которых мультипрограммные задержки приемлемы. Разработчики сортировки и операционной системы обязаны предоставить пользователю разумный выбор возможностей и механизмы для их реализации. [9]
Очевидно, на конструкцию языка управления сортировкой будут влиять средства языка управления заданиями системы. Разработчику сортировки следует иметь весьма обстоятельное представление о языке управления заданиями. Его должно интересовать, насколько пользователь может управлять распределением. Его должно интересовать поведение и возможности системного загрузчика, поскольку потенциально это рабочий компонент его сортировки. Поскольку сортировка является одним из самых важных прикладных пакетов, предоставляемых ( или предлагаемых) вместе с системой, и так как скорость сортировки - это важный фактор, определяющий предпочтительность аппаратной части системы для пользователя, то группа разработки сортировки должна иметь возможность влиять на многие элементы системы, которые внешне кажутся не связанными с сортировкой. Используя подход то, что хорошо для сортировки, хорошо и для системы, разработчику сортировки следует настаивать на одобрении того, на что он рассчитывает. [10]
Сегодняшний пользователь больше расположен видеть таблицы, чем формулы, однако, ему следует иметь представление о том, как определить время работы сортировки. Возможность хронометрирования, безусловно, является существенной для разработчика сортировки. [11]
Ясно, что преимущество конструкции с несколькими штангами зависит от того, являются ли все штанги постоянно доступными. В некоторых вычислительных системах, мультипрограммных или с удаленным доступом, штанги временно может перехватывать супервизор операционной системы. Если такой перехват возможен, то разработчик сортировки не может рассчитывать на доетижение теоретических выгод обработки несколькими штангами. [12]
Простая сортировка использует один и тот же метод в течение всего процесса сортировки. При этом сам метод не зависит ни от состояния данных, ни от какой-либо точки в процедуре. Алгоритм, напротив, может быть комбинированным. Разработчик сортировки может определить, что наилучшим методом для его данных является комбинация методов, переключающаяся с одного метода на другой в зависимости, например, от числа элементов в подсписке. Простые алгоритмы не обязательно являются несложными; многие методы, ориентированные на обработку древовидных структур, являются простыми только в том смысле, в каком это слово используется здесь. [13]
Очевидно, на конструкцию языка управления сортировкой будут влиять средства языка управления заданиями системы. Разработчику сортировки следует иметь весьма обстоятельное представление о языке управления заданиями. Его должно интересовать, насколько пользователь может управлять распределением. Его должно интересовать поведение и возможности системного загрузчика, поскольку потенциально это рабочий компонент его сортировки. Поскольку сортировка является одним из самых важных прикладных пакетов, предоставляемых ( или предлагаемых) вместе с системой, и так как скорость сортировки - это важный фактор, определяющий предпочтительность аппаратной части системы для пользователя, то группа разработки сортировки должна иметь возможность влиять на многие элементы системы, которые внешне кажутся не связанными с сортировкой. Используя подход то, что хорошо для сортировки, хорошо и для системы, разработчику сортировки следует настаивать на одобрении того, на что он рассчитывает. [14]