Глава 15. Оптимизация системы В данной главе обсуждаются различные способы оптимизации системы. Она охватывают следующие темы: - типы памяти и ее использование; - установки в CONFIG.FP; - скорость инициализации; - файлы и каталоги; - свободное пространство на диске; - псевдодиски и дисковые буферы;: - арифметический сопроцессор; - резидентные программы; - загрузчики; - замечания по версии LAN. Память СУБД FoxPro может использовать преимущества работы с большими объемами памяти компьютера. Если ваш компьютер содержит добавочную память, и она соответствующим образом подключена к конфигурации, производи- тельность FoxPro можно еще более улучшить. Если вы хотите, чтобы FoxPro работала с наивысшей скоростью, или хотите запускать FoxPro на- ряду с резидентными в памяти программами, такими как спуллеры или прог- раммы переопределения клавиш, желательно увеличить память вашего компьютера, чтобы она превышала стандартный объем 640К. Типы памяти Класс микрокомпьютеров PC может содержать три типа памяти: обычную, расширенную и дополнительную. Обычная память Все компьютеры PC могут содержать обычную память (до 640К). Это па- мять, в которую обычно загружаются программы и где они выполняются. Стандартная версия FoxPro требует наличия не менее 512К обычной памяти (не менее 420К свободной памяти после загрузки резидентных программ). Расширенная память Семейство микропроцессоров 8086 имеют пространство физических адресов до 1024К (1Мб). О первых 640К обычной памяти мы говорили выше. Остав- шиеся 384К зарезервированы для использования под ПАУ (память, доступ- ная только по чтению) и контроллеры устройств. Кроме того, блок этой памяти объемом 64К может резервироваться для использования менеджером расширенной памяти, который соответствует спецификации Lotus/Intel/Microsoft (LIM EMS Memory Manager). Менеджер расширенной памяти EMM (Exрanded Memory Manager) управляет расширенной памятью как системным ресурсом, и может одновременно использоваться несколькими программами и обслуживать функциональные вызовы EMS. EMS - это подкл- ючаемая память, которая может превышать адресное пространство ЦП и которая может отображаться на обычную память с помощью страничного кадра EMS. Старшие блоки памяти В старшие 384К памяти может отображаться (с помощью менеджера расши- ренной памяти в процессорах 80386 или 80486 или с помощью аппаратного устройства типа MAXIT фирмы McGraw Нill Software) память ПЗУ. Старшие блоки памяти особенно выгодно использовать, поскольку они обеспечивают дополнительную память для запуска прикладных программ (таких как FoxPro) после загрузки в эти блоки памяти сетевой оболочки а также ре- зидентный в памяти программ (TSR). Дополнительная память Дополнительная память - это память, которая расположена за границей адресов 1Мб. Некоторые операционные системы (OS/2 и UNIX) могут ис- пользовать ее непосредственно, но стандартная операционная система DOS без драйвера спецификации дополнительной памяти (XMS) и интерфейса, позволяющего обращаться к памяти выше 640К, адресоваться к ней не мо- жет. Память и стандартная версия FoxPro Системы, где работает стандартная версия FoxPro, вам помогут оптимизи- ровать следующие предложения. Для получения наилучшей производи- тельности нужно сделать так, чтобы для FoxPro был доступен максимально возможный объем памяти. Если у вас имеется достаточный объем памяти, можно запустить расширенную версию FoxPro. Память EMS Если FoxPro загружается в память наряду с резидентными программами, такими, как спуллеры и программы переопределения клавиш, вам захочется увеличить память компьютера, чтобы она превышала обычный объем в 640К. На машинах с расширенной памятью, которая совместима с EMS LIM 4.0, FoxPro использует первые 64К расширенной памяти, как память "общего назначения", а оставшуюся расширенную память - для ускоренного файло- вого ввода-вывода и кэш-буферов кодовых сегментов FoxPro. Память обще- го назначения используется для работы с окнами Browse, окнами, опреде- ляемыми пользователем, меню, переменными в памяти, программами и т.д. Если вы работаете на процессорах 80386 или 80486, вам повезло. Сущест- вует много недорогих программ, которые используют дополнительную па- мять для эмуляции EMS, например, QEMM фирмы Quarterdeck Office Systems и 386MAX фирмы Qualitas Inc. Операционная система DOS версии 5.0 вклю- чает в себя EMM. Если вы используете другие процессоры, у вас есть две возможности. Во -первых, вы можете установить плату EMS. Эта часть ап- паратного обеспечения, которая работает обычно с процессорами 8086/8088 и 80286, представляет собой большой объем памяти наряду с дополнительными программами, которые обеспечивают интерфейс между программным обеспечением и платой. Большинство проверенных нами плат работали прекрасно, поэтому вы можете выбрать их, исходя из цены, ско- рости и репутации. В машинах класса AT (процессоры 80286) имеются так- же утилиты программного обеспечения, которые предназначены для ис- пользования дополнительной памяти для эмуляции EMS. Однако опыт работы с такими продуктами нас разочаровал - ни один из них не может работ- ать с FoxPro. Между 640К и 1Мб К первому мегабайту после 640К доступ можно получить разными способа- ми. Такая память не является продолжением младших 640К, и многие прог- раммы использовать ее не могут. Однако FoxPro может использовать большую память общего назначения. Дополнительная отличная от EMS па- мять, превышающая 640К, улучшает скорость ввода-вывода и производи- тельность FoxPro и, что еще более важно, увеличивает максимально доступ- ное число окон, файлов, индексов, строк и т.д. Если вы используете процессор 80386 или 80486, вам повезло. Большинство эмуляторов EMS, подобных QEMM и 386MAX, будут автоматически делать доступными блоки между 640К и 1Мб. При этом FoxPro автоматически использует такую па- мять. Если вы используете процессор 8086/88 или 80286, то существуют аппаратные продукты, которые позволяют использовать память, превышающую 640К, к неиспользуемому адресному пространству. Одной из таких плат, которую мы с успехом использовали, является MAXIT. Выше одного мега- байта - дополнительная память Дополнительную память нельзя использовать в стандартной версии FoxPro непосредственно, пока она не будет работать, как EMS. То, каким образом можно сделать так, чтобы дополнительная память работала как расширен- ная память, зависит от вашей системы. Обычно для этого устанавливается менеджер памяти - программное обеспечение, которое организует с допол- нительной памятью интерфейс типа EMS (LIM 4.0). Если дополнительная память эмулирует расширенную память, то FoxPro будет распознавать ее наличие и использовать преимущества работы с ней. Чтобы проверить, ка- кой объем EMS использует FoxPro в данный момент, используйте во вплы- вающем системном меню System команду About FoxPro... или функцию SYS(23). Стандартная версия FoxPro в нижней памяти Новый метод загрузки сегмента FoxPro 2.0 в значительной степени устра- няет возможное ухудшение производительности, наблюдаемое некоторыми пользователями версии 1.02. Однако нужно принять во внимание следую- щее: - Программы, которые были аккуратно разработаны для оптимизации произ- водительности в версии 1.02, будут иметь в версии 2.0 существенно меньшее преимущество над программами, написанными произвольно. Некото- рые хорошо написанные программы с интенсивным интерфейсом могут рабо- тать в версии 2.0 не лучше, чем в 1.02. - Стратегия загрузки сегментов изменена таким образом, чтобы оптимизи- ровать повторное использование ряда средств (например, используется образец, который будет отслеживаться при выполнении реальной приклад- ной программы). При однократном использовании средства эта стратегия не обязательно приведет к улучшению. А, конечно, однократное использо- вание - это именно то, что вы проверяете при интерактивном тестирова- нии. - При экстенсивном использовании новых средств FoxPro производи- тельность программ FoxPro с интенсивным интерфейсом при наличии менее 512К может быть неоптимальной. FoxPro и более старые эмуляторы EMS Отдельные старые менеджеры памяти EMS могут вызывать при работе с FoxPro проблемы, поскольку эти эмуляторы не поддерживают полностью спецификацию LIM 4.0. Поэтому имеются специальные параметры, позволяю- щие FoxPro работать с неполными эмуляторами EMS. Эти параметры не представляют оптимальную конфигурацию FoxPro. (Если ваш драйвер EMS не совместим с EMS 4.0, расширенная память может использоваться только для ускоренного файлового ввода-вывода.) Если FoxPro ведет себя стран- но, и у вас старый эмулятор EMS, добавьте в файл CONFIG.FP одну из следующих строк: MES64=OFF Вся расширенная память будет использоваться для ускоренного файлового ввода-вывода. Попробуйте сначала это. Если проблемы не исчезнут, поп- робуйте следующий параметр: EMS=64 Вся расширенная память кроме первых 64К, которые используются, как па- мять "общего назначения", игнорируется. Некоторые пользователи с уста- ревшими версиями QEMM также сообщают о проблемах при работе с FoxPro. Если вы используете QEMM, мы рекомендуем вам перейти к последним вер- сиям этого продукта. Расширенная версия FoxPro Расширенная версия FoxPro 2.0 может работать на машинах с процессорами 386 или 486, оснащенных не менее 1.5Мб памяти без ухудшения производи- тельности или почти без ухудшения. Если необходимо, расширенная версия FoxPro разрешает запросы страничного обмена, что позволяет ей работать на 1.5Мб. Если у вас менее 1.5Мб свободной памяти, то следует ис- пользовать вместо расширенной стандартную версию FoxPro. Расширенная версия FoxPro может использовать преимущества расширенной памяти или дополнительной памяти, которая работает как расширенная, но она не может работать с этими двумя видами памяти сразу. Если только часть вашей дополнительной памяти работает как расширенная память, то расширенная версия будет использовать только память, которая работает как расширенная память. Например, если у вас имеется 8Мб памяти, и только 1Мб памяти работает, как расширенная память, то FoxPro не смо- жет обращаться к остальным 7Мб. FoxPro (Х) для работы в защищенном ре- жиме использует модифицированную версию экстендера DOS (DOS Extender) Ergo OS386. Экстендеры DOS могут работать в различных операционных средах. Когда экстендер запускается, он проверяет в показанном ниже порядке наличие следующей памяти: - DMPI Server (интерфейс защищенного режима DOS) - Microsoft Windows 3.x (это сервер DMPI). Если сервер DMPI присутству- ет, расширенная версия FoxPro загружаться не может, поскольку FoxPro (Х) использует Ergo OS386, который в настоящее время не поддерживает DMPI. Теперь он будет ее поддерживать, и скоро появится модификация версии FoxPro (Х), работающая непосредственно под DMPI. Примечание: Это не означает, что вы не сможете работать под Windows 3.0. Это озна- чает просто, что в данный момент вам придется работать со стандартной версией FoxPro. - Сервер VCPI (Virtual Program Control Interface - Ин- терфейс управления виртуальной программой) - 386MAX, BlueMax, QEMM386, EMM386.EXE (версии EMM386.SYS DOS не младше 4.0) и CEMM (Comрaq) представляют собой серверы VCPI. Они выполняют также различные другие функции. - Драйвер XMS (Extended Memory Sрecification. Cпецификация дополнительной памяти) НIMEM.SYS (Microsoft), НIMEM.EXE (Comрaq), 386MAX, BlueMax и QEMM-386 представляю собой драйверы XMS. - INT 15. Когда менеджер памяти отсутствует, это прерывание используется для оп- роса дополнительной памяти, ее распределения и т.д. В практическом смысле для пользователей расширенной версии FoxPro это означает следу- ющее: НIMEM.SYS и EMM386.EXE DOS Если вы используете НIMEM.SYS и EMM386.EXE DOS, EMM386.EXE получает всю память их XMS, которой управляет НIMEM.SYS. Без параметров он по умолчанию обеспечивает только 256К управляемой VCPI памяти (которая отображается также, как EMS). 256К управляемой VCPI памяти недостаточ- но для загрузки расширенной версии FoxPro. Даже если другие 3Мб допол- нительной памяти доступны, как память XMS (управляемая НIMEM.SYS) OS386 будет ее игнорировать. Используется только первый обнаруженный (в показанном выше порядке) менеджер памяти. Если вы хотите использо- вать с расширенной версией FoxPro EMM386.EXE, то в строку DEVICE=EMM386.SYS нужно добавить числовой параметр. Это число должно отражать объем дополнительной памяти в вашем компьютере в килобайтах и должно быть кратно 16К. Если по некоторым причинам во время загрузки вы получаете сообщение о том, что EMM386 настраивает это значение, из- мените в соответствии с этим значением файл CONFIG.FP, и сообщение ис- чезнет. Предупреждение: Не используйте параметр NOEMS. Это приведет также к отключению средств VCPI, которые доступны через EMS. 386MAX, BlueMax и QEMM386 Эти серверы VCPI совместно используют память EMS, XMS и память VCPI, используя только один менеджер. Более того, по умолчанию значением па- мяти EMS или памяти VCPI является вся ваша доступная дополнительная память. Поэтому они прекрасно работают с расширенной версией FoxPro без специальных параметров. Кроме того, работают они обычно быстрее, чем EMM386.EXE. Скорость вы можете проверить сами. Отображенную ско- рость эмулятора EMS в микросекундах показывает команда FoxPro DISPLAY STATUS. Cтраничный обмен по запросу Если это необходимо, расширенная версия FoxPro разрешает страничный обмен по запросу, что позволяет ей работать с объемом памяти всего 1.5 Мб. Страничный обмен по запросу - это более развитое средство, заменя- ющее метод загрузки сегмента, используемый в стандартной версии FoxPro. Он позволяет выполнять программу объемом 1.6 Мб (FoxPro) в па- мяти, объем которой меньше 1.6 Мб. Если у вам имеется для FoxPro после ее запуска приблизительно 2 Мб или менее свободной памяти, вы можете увидеть сообщение, показывающее, что страничный обмен по запросу рабо- тает. Если вы можете предоставить достаточно памяти для работы без страничного обмена по запросу, FoxPro может работать с лучшей произво- дительностью, так как вся программа FoxPro может сразу поместиться в память. Когда доступно ровно 2 Мб, память распределяется между FoxPro и кодом пользователем следующим образом: - код FoxPro: 1.33 Мб; - память пользователя: 0.67 Мб. Если доступно все меньше и меньше памяти, выделенная пользователем па- мять уменьшается до 1/3 доступной памяти. Таким образом, когда доступ- но 1.5 Мб, для памяти и программ пользователя выделяется 500К, а для самой FoxPro и операционной системы - 1 Мб. Если доступен только 1 Мб, то пользователю выделяется 0.33 Мб, а FoxPro - 0.67 Мб. При этом, ко- нечно, чем меньше памяти будет доступно для FoxPro, тем медленнее она будет работать. Доступ к памяти DOS В файле CONFIG.FP для расширенной версии имеется параметр DOSMEM, ко- торый управляет тем, сколько будет доступно памяти DOS. Для DOSMEM можно назначать три значения: ON Когда DOSMEM имеет значение ON, FoxPro обращается и использует всю па- мять FoxPro, а также всю дополнительную память. <выражN> Если вы хотите зарезервировать часть памяти DOS, то можете использо- вать числовой аргумент. <выражN> задает объем памяти DOS в килобайтах, которую нужно зарезервировать. Если вы выполняете в FoxPro команду RUN, зарезервируйте объем необходимой памяти путем задания <выражN>. OFF По умолчанию DOSMEM=OFF. В этом случае FoxPro не будет обращаться к памяти DOS. Рекомендации по использованию оперативной памяти FoxPro может использовать преимущества работы с большими объемами па- мяти компьютера (чем больше памяти, тем лучше работает FoxPro). Во многих случаях добавление к вашей системе дополнительной памяти может существенно улучшить производительность FoxPro. И расширенная, и стан- дартная версии FoxPro могут очень эффективно использовать большие объемы памяти, но расширенная версия делает это несколько лучше. В данном разделе ссылки на процессор 386 означают любой процессор 386 и старше (386, 486 и последующие). Процессор 386 с памятью не менее 2 Мб В этом случае всегда используйте расширенную версию FoxPro. Вы об этом не пожалеете! В данном случае менеджеры дополнительной памяти типа QEMM (Quarterdeck Office Systgems) или 386MAX (Quolitas Inc.) и другие не требуются. Однако такие программы могут оказаться полезными. Процессор 386 с менее 2 Мб дополнительной памяти Расширенная версия FoxPro может работать на процессоре 386 с менее 2 Мб дополнительной памяти. Это сопровождается страничным обменом по запросу, который используется обычно в больших компьютерах, и СУБД FoxPro 2.0 - первый продукт, в котором это используется. Обычно расши- ренная версия FoxPro работает лучше, чем стандартная версия. Однако если объем дополнительной памяти меньше 2 Мб, то возникают ситуации, когда желательно запускать стандартную версию. В частности, объемы не- которых структур данных, распределяемых при работе в расширенной вер- сии, несколько больше чем в стандартной версии. Таким образом, если объем памяти меньше 2 Мб, возникают ситуации, когда программа прекрас- но работает в стандартной версии, но при работе в расширенной версии ей не хватает памяти. Кроме того, хотя делать это можно, мы не реко- мендуем запускать расширенную версию при объеме доступной свободной памяти менее 1.5 Мб. В этом случае пользуйтесь стандартной версией. Выполнение стандартной версии FoxPro на процессоре 386 Всегда используйте QEMM, 386MAX или другие менеджеры расширенной памя- ти. Вы об этом не пожалеете! При работе на процессоре 386 большой бу- фер диска не требуется Небольшой кэш-буфер диска может оказаться полезным, но будьте аккурат- ны! При использовании некоторых кэш-буферов диска и версий DOS 4.01 и DOS 5.0000 мы сталкивались с существенными проблемами. Список кэш-бу- феров диска, которые успешно работают, можно получить в группе техни- ческой поддержки Fox Technical Suррort или FOXFORUM (ComрuterServe). Общие замечания Приводимые ниже предложения помогут вам оптимизировать вашу систему при использовании некоторых версий FoxPro. CONFIG.SYS Простейшим способом устанавливать рабочую операционную среду FoxPro является подготовка системного файла конфигурации CONFIG.SYS. Систем- ный файл конфигурации содержит определенные команды, которые проверя- ются и выполняются при загрузке компьютера. Эти установки изменяют па- раметры конфигурации, используемые по умолчанию. Например, вы можете увеличить или уменьшить объем памяти, резервируемый для данный при чте- нии и записи на диск, или добавить драйвер устройства, позволяющий ис- пользовать дополнительную память, как расширенную память (EMS). Файл CONFIG.SYS - это не файл FoxPro. Это файл, который используется опера- ционной системой вашего компьютера для задания операционной среды. Так как FoxPro взаимодействует с этой операционной средой, вы должны убе- диться, что определенные параметры установлены правильно. Полную ин- формацию о файле CONFIG.SYS можно найти в документации, сопровождающей операционную систему вашего компьютера. Непосредственное отношение к FoxPro имеют операторы BUFFERS= и FILES= файла CONFIG.SYS. Буферы Оператор BUFFERS содержит число дисковых буферов, которые DOS резерви- рует в памяти при запуске компьютера. Дисковый буфер - это блок памяти (обычно 512К), который DOS использует для размещения данных при чтении и записи на диск. Для достижения наилучшей производительности FoxPro файл CONFIG.SYS должен содержать оператор BUFFERS со значением от 20 до 40. Предупреждение: Нужно помнить о том, что для буферов требуется память, поэтому их не следует задавать слишком много. Файлы Оператор FILES задает число файлов, которые операционная система смо- жет открывать и обращаться к ним одновременно. Это число непосредст- венно влияет на число файлов, которые сможет открыть FoxPro. Оператор FILES в файле CONFIG.SYS должен иметь значение, по крайней мене на 10 больше, чем максимальное число файлов, которые вам потребуется однов- ременно открыть. Мы рекомендуем задавать минимальное значение 40. Скорость загрузки Время, необходимое для загрузки и запуска FoxPro, пропорционально фи- зическому размеру FoxPro, действующей длине маршрута (PATН), числу элементов, которые нужно проанализировать при запуске FoxPro, и други- ми факторам. Многими из них вы можете непосредственно управлять. Время загрузки расширенной версии FoxPro будет больше, чем время загрузки стандартной версии. Это связано с тем, что расширенная версия FoxPro во время загрузки загружает весь свой выполняемый код в память. После того, как она загружена, ее производительность, конечно, существенно превышает производительность стандартной версии FoxPro. При инициализации FoxPro ищет следующие файлы: - FOXPRO.EXE - FOXGRAPН.EXE - FOXНELP - FOXUSER - CONFIG.FP - GENMENU - GENSCRN - GENPD - GENTAB Поиск файлов FOXUSER.DBF и CONFIG.FP она выполняет в следующих местах: 1. Где находятся файлы .APP или .EXE, если они имеются. Это имеет мес- то, если вы, например, запускаете FoxPro следующей командой: FOXPFOX myaрр.aрр Если начальные файлы .APP и .EXE содержат CONFIG.FP, то он всегда ис- пользуется, и переопределить его нельзя. 2. В рабочем каталоге. 3. В каталоге FoxPro. 4. По маршруту DOS. Если ваше прикладная программа не использует файл FOXUSER или FOXНELP, то отключите их (OFF) в файле CONFIG.FP. Все остальные компоненты FoxPro (FOXGRAPН.EXE, GENMENU, GENSCRN, GENPD, GENTAB) ищутся автома- тически только в каталоге FoxPro. Если эти компоненты находятся в дру- гом месте, вы должны автоматически идентифицировать маршрут доступа к ним в своем файле CONFIG.FP. Например: _FOXGRAPН=C:\GRAPНIC\FOXGRAPН.EXE _FOXDOC=C:\DOCUMENT\FOXDOX.EXE _GENGRAPН=C:\GRAPНIC\GENGRAPН.PRG _GENSCRN=C:\DEV\MYTEMPL.PRG Если FoxDoc или FoxGraрh вам не требуются, вы можете ускорить загруз- ку, включив в файл CONFIG.FP следующие строки: _FOXDOC="" _FOXGRAPН="" Чтобы явно задать место расположения файла CONFIG.FP, может использо- ваться переменная операционной среды FOXPROCFG. Подробности о FOXPROCFG можно найти в данном руководстве в главе "Настройка FoxPro". Файлы и каталоги В общем случае неудовлетворительная производительность FoxPro вызыва- ется обычно работой в каталогах со слишком большим числом файлов. Ти- пичный сценарий может выглядеть следующим образом: - Ваша прикладная система состоит из 150 программ с 30 базами данных и индексными файлами. - 150 исходных программных файлов (.PRG, .SPR, .MPR) сопровождаются 150 файлами компилируемых программ (.FXP, .SPZ, .MPX), таким образом общее число файлов равно 300. - Если имеются индексные файлы .NDX, то базы данных реиндексируются для создания индексных файлов FoxPro (.IDX). - Кроме того. когда прикладной пакет начинает работать, он создает множество временных баз данных и временных индексов. Как только число файлов в каталоге существенно возрастает, пользова- тель вызывает техническую службу и говорит: "FoxPro не выполняет мою программу с той скоростью, как она должна это делать". Но в этом слу- чае пользователь видит лишь то, насколько быстро операционная система может выполнять поиск по каталогам, а этой функцией FoxPro не управля- ет. Чтобы исправить данную ситуацию, вы должны уменьшить число файлов в вашем каталоге. Чтобы уменьшить число файлов в каталогах и ускорить время поиска файлов, попробуйте сделать следующее: - Чтобы устранить необходимость создания многочисленных файлов .FXP, . SPX и т.д., попробуйте использовать менеджер проектов. Распределите ваши файлы .PRG, .SPR и .MPR по разным каталогам. - Когда ваша прикладная программа будет готова, создайте вместо много- численных отдельных файлов .FPX, .SPX и т.д. файлы .APP или .EXE. - Чтобы DOS могла хранить больше информации о каталогах в памяти, уве- личьте значение BUFFERS, заданное в CONFIG.SYS. - Для минимизации числа реальных атрибутов диска, необходимых для по- иска в каталогах, используйте небольшой дисковый кэш-буфер. В общем случае кэш-буфер диска - это существенно лучшее решение, чем FASTOPEN DOS. Во-первых, он существенно ускоряет ввод-вывод, а во-вторых, мы получали сообщения о затруднениях при работе с FASTOPEN. - Удаление файлов из каталогов не приводит в немедленному ускорению поиска в каталогах. Когда файл удаляется, в каталоге остается пустая запись ("дыра"). При поиске в каталогах DOS проверяет все записи, включая "дыры". - Чтобы достичь ожидаемого улучшения производительности, вам может потребоваться копирование файлов в новый каталог или компрессирование каталога с помощью специальной предназначенной для этой цели програм- мы-утилиты (Norton Utilities, DOS2OCLS, VOPT и др.). Предупреждение: Удаление файлов из каталогов не приводит в немедленному ускорению по- иска в каталогах. Когда файл удаляется, в каталоге остается пустая за- пись ("дыра"). При поиске в каталогах DOS проверяет все записи, вклю- чая "дыры". Чтобы достичь ожидаемого улучшения производительности, вам может потребоваться копирование файлов в новый каталог или компресси- рование каталога с помощью специальной предназначенной для этой цели программы-утилиты (Norton Utilities, DOS2OCLS, VOPT и др.). Свободное пространство на диске Во всех операционных средах, от больших компьютеров до микрокомпьюте- ров производительность операций ввода-вывода на диск при заполнении диска существенно ухудшается, особенно когда диск почти заполнен. Если вы обнаружите, что на диске у вас мало места, и вы хотите улучшить производительность FoxPro, то нужно удалить ненужные данные или уста- новить диск большего объема. Псевдодиски и дисковые кэш-буферы, использующие EMS Некоторые продукты, используя дополнительную память (EMS), создают псевдодиски (диски, моделируемые в памяти) или дисковые кэш-буферы, несовместимые с FoxPro. Насколько мы смогли понять, проблема состоит в том, что некоторые псевдодиски или программное обеспечение кэш-буферов не соблюдают правила работы с EMS. Если вы выполняете программу, кото- рая создает псевдодиск или дисковый кэш вне EMS, и если данные на псевдодиске нарушаются, или (в случае дискового кэш-буфера) вы обнару- жите другие странности в поведении диска, у вам может возникнуть имен- но такая проблема. Мы не сталкивались с ситуациями, когда симптомы трудноуловимы - FoxPro постоянно в таких случаях сталкивается с зат- руднениями. Это означает, что опасность длительного нарушения данных невелика (оно быстро выявляется). Техническое описание Если EMS установлено в состояние ON, FoxPro выполняет основной объем ввода-вывода непосредственно в EMS, то есть выполняет ввод-вывод с прямым доступом к памяти (DMA I/O) непосредственно в страничный кадр EMS. Очевидно, что FoxPro представляет собой одну из немногих приклад- ных программ, которые используют данный метод (хотя использование EMS, особенно охватываемой спецификацией LIM 4.0, вполне допустимо и жела- тельно). Однако псевдодиск и программы организации кэш-буферов (кото- рые также выполняют ввод-вывод непосредственно в EMS) вступают в конфликт с использованием EMS СУБД FoxPro. В проверенных нами случаях эти другие программы были написаны в предположении, что больше никакая другая программа не выполняет ввод-вывод непосредственно в EMS. Что же происходит неверно? Опишем детали: 1. FoxPro требует, чтобы DOS выполняла при вводе-выводе передачу не- посредственно в страничную рамку EMS. 2. Псевдодиск или программа организации кэш-буфера перехватывает это обращение к DOS и выполняет соответствующие действия по эффективной передаче данных ввода-вывода. Мы наблюдали три случая, когда программы ведут себя неверно: - Некоторые из них не могут выделить память EMS, которую они использу- ют, что вызывает немедленные трудности, когда FoxPro пытается ис- пользовать ту же память. - Некоторым из них не удается восстановить страничную рамку EMS для печати той же памяти, к которой они обращались непосредственно перед запросом на ввод-вывод. Изменяя память, к которой выполняется обраще- ние в страничном кадре в ходе операции ввода-вывода, они вводят в заб- луждение FoxPro. - Некоторым программам не удается определить, что адреса, в которые будут считаны данные, находятся в самом страничном кадре. Они заново отображают страничный кадр таким образом, что он содержит содержит их буфера ввода-вывода, затем копируют данные из своих буферов по адресу передачи ввода-вывода, не замечая, что этот адрес находится в их собственном буфере. Естественно, это постоянно приводит к разрушению данных в их буферах. FoxPro ничего не может сделать с такими отклонениями от правильного использования EMS (в соответствии со спецификацией LIM). Что может делать программное обеспечение фирмы Fox Software Fox Software будет: - проверять и распознавать столько таких продуктов, сколько возможно, для п - выводить исчерпывающие отчеты при возникновении проблем; - поддерживать и распространяет список продуктов, которые работают корректно - работать с разработчиками несовместимых продуктов, чтобы помочь им внести Конечно, если обнаруживается, что какие-либо из подобных проб- лем вызваны ра Что вы можете сделать при возникновении данных проблем Приведем некоторые предложения, которые могут помочь вам избежать трудносте - Если возможно, измените конфигурацию вашего псевдодиска или кеш-ути- литы т - Не используйте псевдодиск или программы организации кэш-буфера од- новременно - Включите в ваш файл CONFIG.FP строку EMS=OFF. Это решение не реко- мендуется - Чтобы получить обновленные версии, обратитесь к разработчику псевдо- диска - Приобретите один из продуктов, который мы проверили и который кор- ректно р Когда использовать псевдодиски Если вы используете псевдодиск, предполагается, что для улучшения про- изводи - Файлы *.OVL: только стандартная версия FoxPro. - Файлы типа TMP: устанавливаются в файле AUTOEXEC.BAT, используются только Арифметический сопроцессор Если вы не выполняете интенсивных математических вычислений (SIN( ), COS( ) Память и резидентные в памяти программы Как показывает их название, резидентные программы остаются резидентны- ми в п Загрузчики Загрузчики типа FOX.EXE могут потребовать до 5 - 6 килобайт памяти - памяти FoxPro/LAN и временные файлы Если вы явно не укажете альтернативные каталоги, включив в файл CONFIG.FP о Эти временные файлы создаются в ходе редактирования, ин- дексирования, сортир Если на локальных рабочих станциях имеются диско- воды с настраиваемым размер