КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Оптимизация приложений.Стр 1 из 9Следующая ⇒ Access. Программирование на VBA. Часть 4.
По материалам книги Стивена Форта, Тома Хоуна и Джеймса Релстона «Microsoft Access 2000 Development»
Оптимизация приложения представляет собой тему для бесконечного обсуждения и споров между разработчиками. Всем нужны оптимальные решения, но что же точно означает термин "оптимальный"? Одни полагают, что "оптимальный" значит самый быстрый, поэтому самая высокоскоростная технология всегда будет оптимальной. Другие утверждают, что оптимальным является такое решение, которое обеспечивает большую надежность, даже если при этом приложение работает медленно и генерирует чрезмерное количество предупреждений. Третьи считают, что целью оптимизации является эксплуатационная надежность и расширяемость. Кто же прав? Ответ заключается в том, что, как часто это бывает в жизни, правы все и все они ошибаются. На самом деле оптимизация представляет собой попытку уравновесить все три представленные мнения. Оптимальным является такое решение, которое обеспечивает пользователя приемлемым быстродействием приложений. Обычно пользователи не в восторге от медленно выполняющихся приложений. Однако, если оптимальное решение представляет собой лишь способ быстрого разрушения и потери данных, разработчик пошел на неразумный компромисс. Если приложение работает достаточно быстро и доказало свою надежность, существуют неплохие шансы, что пользователи захотят пользоваться таким приложением и дальше. Однако необычные решения по дизайну и неортодоксальное выполнение данного дизайна могут затруднить дальнейшее улучшение и расширение возможностей хорошо работающего приложения. Приложения с некоторой точки зрения напоминают автомобили. Мало кто захочет оказаться за рулем очень быстрого автомобиля, у которого слабые тормоза и плохая управляемость. Всем нужен автомобиль, который заводится каждый день и доставляет куда нужно без особой суматохи. Наконец, счета за ремонт и обслуживание не должны превышать разумных величин. Хотя в данной статье рассматривается оптимизация скорости работы приложения, необходимо помнить, что приложение, кроме того, должно быть надежным, стабильно работающим и расширяемым. В данной статье рассматривается много методик оптимизации приложения. Почти все они имеют некоторые ограничения, а некоторые иногда могут только ухудшить работу с приложениями. Даже лучшие из описанных методик могут оказаться бесполезными в данном конкретном случае. Слепо копируя некоторые подходы, можно потерять плоды других усилий. Тем не менее, разумно воплощая на практике уроки данной статьи, можно добиться значительного повышения производительности приложений. Единственный способ узнать, подойдут ли данные методики, — поэкспериментировать с ними. Часто результаты могут оказаться совершенно неожиданными. Подход, который прекрасно работает в одном случае, может не оказать никакого ощутимого влияния в другом. Оптимизация — сложный процесс, поскольку рабочее окружение является сложной и постоянно меняющейся средой, и, кроме того, цель оптимизации может оказаться трудно достижимой. Существуют тысячи вопросов об оптимизации, которые можно обсудить. В данной статье рассмотрение начинается с наиболее общих вопросов и заканчивается непосредственно касающимися приложения, т.е. сначала речь пойдетоб аппаратном обеспечении и операционной системе, а затем о различных методиках кодирования. Оптимизация аппаратных средств и ОС Windows Каждый модуль Access 2000 обладает множеством возможностей для настройки приложения, но нельзя рассчитывать на какой-либо успех в работе, если компьютер, на котором выполняется приложение, является устаревшим или если недостаточно оперативной памяти. Обычно дешевле приобрести современное аппаратное обеспечение, чем платить разработчикам за улучшение программы, достигая при этом одинаковой производительности приложений. Аппаратное обеспечение дешевле, чем программное, и обновление оборудования способствует повышению производительностивсего совместимого программного обеспечения, которое установлено на данном компьютере. Естественно предположить, что приложение Access (или любое подобное приложение) будет быстрее работать на более быстродействующем компьютере. Если имеется возможность обновить оборудование, ею следует воспользоваться. Компания Microsoft опубликовала минимальные требования для работы Access или Microsoft Office 2000. Однако разработчики быстро обнаруживают, что попытка запустить приложение Access 2000 на компьютере, удовлетворяющем этим минимальным требованиям, приводит к разочарованию. На самом деле минимальные требования для работы с приложениями должны быть такими: • Процессор Pentium 133 МГц, • 32 Мб ОЗУ (особенно под управлением Windows NT), • Если выбирать между модернизацией процессора и установкой ОЗУ большего объема, следует выбрать ОЗУ. Учитывая мировое падение цен на микросхемы памяти, увеличение объема ОЗУ — самый дешевый способ повышения производительности PC. Необходимо помнить о том, что требования для компьютера разработчика значительно выше. У разработчика должен быть установлен, по крайней мере, процессор Pentium II 233 МГц и 32-64 Мб ОЗУ. • Даже если объем оперативной памяти пользовательского компьютера достаточно велик, ее все равно может оказаться недостаточно. Access, как и любая другая серьезная база данных, для своей нормальной работы требует значительного объема памяти. Необходимо убедиться в том, что для работы данного приложения достаточно памяти. • Для экономии оперативной памяти необходимо отказаться от использования любых хранителей экрана, обоев, фоновых картинок и всех других подобных "излишеств". Только необходимые приложения должны использовать ресурсы процессора при выполнении приложения. Чем больше оперативной памяти будет отведено под выполнение приложения, тем быстрее оно будет работать. • Не следует использовать виртуальные диски, организованные в оперативной памяти. В современной 32-разрядной операционной системе для них нет места. • Необходимо регулярно очищать корзину и удалять временные файлы (особенно файлы Internet и электронной почты!). Базы данных требует значительного объема дискового пространства, а эти файлы могут поглотить массу места еще до того, как пользователь успеет это осознать. • Рекомендуется воспользоваться преимуществами утилит дефрагментации диска. В зависимости от используемой операционной системы дефрагментация может производиться автоматически. Компьютерные файлы не хранятся в одном месте. При создании, редактировании, сохранении и удалении файлов используются любые свободные кластеры на жестком диске. Файл .MDB не является исключением. Если жесткий диск сильно фрагментирован, даже простой поиск происходит значительно дольше, потому что компьютер вынужден просматривать весь диск в поисках необходимого результата. • Следует избегать программного сжатия дисков (включая сжатие NTFS). Выполнение базы данных на сжатом диске приводит к значительному снижению производительности приложения. • Можно приобрести дополнительный жесткий диск. В зависимости от того, какую задачу решает приложение, может понадобиться в 5-10 раз больше свободного пространства на диске, чем занимает файл .MDB. Недостаток свободного места снижает скорость выполнения больших запросов, длительных операций, компиляции, обслуживания, импорта и запросов действия. В последние годы цены на жесткие диски сильно упали. • Рекомендуется отключить Journal (Журнал) в Outlook. Журнал Outlook генерирует запись при каждом запуске и выходе из приложения. Этот журнал может стать очень большим и поглощать дисковое пространство и процессорное время, необходимые приложению. • Необходимо использовать освободившуюся оперативную память. Приложения очень хорошо поглощают оперативную память, но неохотно ее освобождают. Со временем многие приложения, включая Access, уменьшают действительный объем доступной оперативной памяти. Периодический выход из среды Access позволит Windows перераспределить освободившуюся память. • Windows и Office следует устанавливать с локального местоположения. Рекомендуется не запускать их в локальной сети. В настоящее время такой подход кажется немного необычным, но до сих пор существует масса случаев, где он оправдывает себя. • Настройка файла подкачки (файла свопинга или виртуальной памяти) также может помочь повысить производительность приложения. Когда объем памяти для Access недостаточен, он занимает дисковое пространство файла подкачки и обращается с ним как с дополнительным ОЗУ. Если виртуальной памяти недостаточно, Access должен постоянно записывать и считывать информацию с диска, чтобы выполнять необходимые операции. Увеличение объема виртуальной памяти может привести к значительному повышению скорости выполнения приложения. Однако следует помнить, что чтение и запись на диск протекает в сотни раз медленнее, чем работа с ОЗУ. Увеличение объема файла подкачки поможет только в том случае, если диск дефрагментирован. СОВЕТ Следует убедиться, что файл подкачки не размещен на сжатом диске или в разделе. Работа со сжатым диском замедляет чтение и запись временных файлов. Может оказаться, что многие из приведенных советов осуществить невозможно, но при разработке приложения Access их обязательно следует учитывать и соответственно предлагать для реализации. Другими возможностями оптимизации разработчик Access может воспользоваться во всей полноте. СОВЕТ У многих разработчиков приложений компьютеры намного более быстродействующие, чем компьютеры, на которых будет выполняться приложение. Необходимо протестировать приложение на компьютере, сравнимом с компьютерами пользователей. Если аппаратное обеспечение отличается от компьютера к компьютеру, приложение следует разрабатывать, рассчитывая на самый низкоскоростной компьютер. Установка приложения с учетом достижения оптимальной производительности Способ настройки файлов приложения может оказать ощутимый эффект на скорость его выполнения. Следующие указания помогут вам оптимизировать работу приложения и в полной мере воспользоваться советами, которые приведены в других разделах данной статьи. • Необходимо отделять данные от приложения. В качестве стандартной практики рекомендуется создавать один файл .MDB для хранения таблиц и размещать его в сети, а другой файл .MDB — для хранения запросов, форм, отчетов и т.д. Это поможет повысить производительность, улучшить работу в многопользовательской среде и обслуживание. Из всех советов, приведенных в данной статье, от этого следует отказываться только по очень важной причине. • Рекомендуется использовать текущую версию файла рабочей группы (system, mdw). Хотя в приложении можно пользоваться предыдущими версиями файла рабочей группы, текущая версия обеспечивает более высокую производительность. • Необходимо регулярно производить сжатие базы данных. Кроме того, базу данных следует сжимать после выполнения обширных операций импорта, удаления и обновления. Сжатие базы данных обеспечивает использование свободного места между страницами данных (резерва) и позволяет выполнить перерасчет статистики базы данных, использующейся при оптимизации запросов. (Более подробно данная тема рассмотрена дальше в этой статье.) Сжатие базы данных, кроме того, позволяет освободить дисковое пространство для других целей. Access 2000 предлагает новую возможность — сжатие базы данных при выходе из базы данных. Для этого необходимо установить флажок Compact on Close (Сжимать при закрытии) во вкладке General (Общие) диалогового окна Options (Параметры) в меню Tools | Options (Сервис | Параметры). Некоторые разработчики обнаружили, что предыдущие версии Access следует сжимать дважды, чтобы добиться хороших результатов. Можно попробовать запустить базу данных из отдельного файла .MDB и позволить этому стартовому приложению выполнить сжатие при запуске базы данных. В сочетании с опцией Compact on Close при каждом выполнении будет производиться двойное сжатие. • При возможности следует установить версию .MDE для приложения. При этом существует несколько преимуществ. Версия .MDE требует наличия скомпилированных модулей, а скомпилированные модули выполняются быстрее, чем нескомпилированные. Кроме того, для .MDE требуется меньший объем ОЗУ и меньше дискового пространства, чем для .MDB, что повышает производительность. СОВЕТ Перед инсталляцией .МDЕ необходимо убедиться, что пользователи осведомлены о невозможности внесения ими изменений в приложение. Учитывая все возрастающую популярность Access, в последнее время многие пользователи настаивают на возможности дальнейшей модификации приложения. Кроме того, необходимо тщательно протестировать приложения, поскольку МDЕ выдают сложные для понимания сообщения об ошибках. Оптимизация настройки механизма Jet Database Engine Хорошо настроенный компьютер и оптимизированная инсталляция базы данных не помогут повысить производительность, если не оптимизировано само приложение. Настоящее приложение базы данных состоит из нескольких частей. Самой важной из них является механизм баз данных Jet. Механизм Jet — это центр почти всего, что происходит в приложении баз данных Access, и его можно оптимизировать точно так же, как и другие функции Access. Попытки оптимизировать Jet должны быть предприняты после разработки большей части, если не всего, приложения; при этом необходимо затратить достаточное количество времени на оценку различных методик оптимизации. Jet 4.0, который поставляется вместе с Access 2000, обладает несколькими преимуществами над своими предшественниками. Такие возможности, как новые типы данных, сжатие текста, индексация полей примечаний, внедрение ANSI SQL-92, управление SQL Security, большая гибкость в работе с внешними индексами, улучшенная схема репликации и улучшенные блокировки, обещают способствовать повышению производительности. Все эти прекрасные возможности подробно описываются в других статьях. В этой статье рассматривается только их влияние на производительность. Механизм Jet выполняет основную оптимизацию без вмешательства разработчика или пользователя. Из всех сложных действий, которые выполняет Jet, можно увидеть только около 15, если заглянуть в системный реестр. Эти установки оказывают серьезное влияние на многие аспекты функционирования системы, поэтому обращаться с ними следует с осторожностью. Изменение установки может привести к результату, совершенно противоположному тому, который ожидался. Даже если приложение на первый взгляд работает быстрее, может оказаться, что нанесен серьезный ущерб стабильности и совместимости. Список установок Jet Registry приведен в табл. 1. Таблица 1. Установки в системном реестре для Jet 4.0.
Безопасное изменение установок Jet Существует три способа, позволяющие изменить установки Jet в системном реестре: • Непосредственное изменение установок, принятых по умолчанию, с помощью RegEdit.exe, • Создание пользовательского профиля для отмены установок, принятых по умолчанию, и вызовданного профиля с помощью опции командной строки/profile, • Временная отмена в приложении установок, принятых по умолчанию, с помощью метода SetOption объекта базы данных. Наиболее предпочтительна третья опция. Ее использование не только не вызывает сложностей, но и позволяет настроить каждое приложение отдельно. В приложении можно даже изменять установки в разное время, чтобы действительно оптимизировать быстродействие. При таком подходе установки, принятые по умолчанию, никогда не изменяются, поэтому новые проекты начинаются на общей основе. Для временной отмены установок в системном реестре нет необходимости использовать вызовы API. Механизм баз данных предлагает метод, который использует два аргумента. Синтаксис приведен ниже:
|