1.7 Мб

Январь 2011

 


Создание интерфейсов в стиле проводника Explorer средствами Visual FoxPro. Часть 2
Дуг Хенниг (Doug Hennig)

В первой части этой серии из трех статей Дуг представил набор классов, которые формируют основу для создания интерфейса в стиле проводника Explorer. В настоящей статье рассматриваются еще несколько таких классов. Первую часть статьи читайте в декабрьском номере 2010 года.


Используем методику FastNoData, чтобы радикально ускорить загрузку форм
Майк Йервуд (Mike Yearwood)

Формы, которые загружаются слишком долго, часто вызывают недовольство. Вот методика, которая может заметно сократить время загрузки форм. Я наблюдал многократное ускорение: примерно от 8 до 4375 раз. Время загрузки самой сложной моей формы, колебавшееся в диапазоне от 8 до 10 секунд, снизилось до устойчивых 2,2 секунды.

Подход
Многие разработчики утверждают, что наилучший подход к оптимизации программного кода заключается в том, чтобы сначала создать, а потом удалить медленно работающие компоненты. Я настаиваю на том, что лучше сразу не включать такие компоненты в решение. Практический опыт и инструментальный набор, состоящий из добротных компонентов, — вот лучший способ обеспечить высокую скорость работы и высокое качество приложения. Все прочее ведет к построению приложений с качеством ниже среднего, а также к последующим затратам дополнительного времени на переработку таких приложений с целью добиться повышения их производительности. Кроме того, я использую только самые быстродействующие методики и отказался от использования методик, работающих медленно. Стараюсь также использовать только один подход для каждой задачи, что ускоряет компоновку. В этом случае облегчается реализация выбранной мной методики.
Согласно общепризнанному подходу, привычка осуществлять обработку локально, а не удаленно, и стремиться не к сложности, а к простоте, обычно ведет к лучшим результатам и может обеспечить значительное ускорение.


Управление программным кодом, который меняется на этапе выполнения
Тамар Е. Гранор, д-р философии (Tamar E. Granor, Ph.D.)

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


Как найти размер курсора FoxPro
Вопрос

Проблема вроде бы кажется простой. Но мы нигде не можем найти решение. Мы с коллегой работаем над приложением, использующим средства вывода в XML, которые есть в FoxPro. Все работает хорошо, но нам нужно иметь возможность создать выходные файлы
определенного размера.


Перемещение больших объемов XML-данных
Пабло ван Диест (Pablo Van Diest)

Хотя мы все знаем, что по сети нужно передавать как можно меньше данных, это не всегда выполнимо.

Описание проблемы
Основная проблема в том, что XMLAdapter работает с XML4, и хотя это дает некоторые преимущества над его предшественником XmlToCursor, который использует XML3, это также приводит к длительному переносу объемного XML в курсор. Хотя только лишь размер таблицы тут не дает полной картины. Нужно анализирвать и структуру записи. Если мы переводим в курсор XML, описывающий таблицу, запись которой не более 20 полей и сама таблица содержит около 10.000 записей, XMLAdapter будет создавать курсор примерно 5 минут, если в таблице было более 10.000 записей, конвертация займет гораздо больше времени: 30-40 минут, в зависимости от числа записей и их структуры. Очевидно, это неприемлимое время, да еще и VFP EXE поедает 200 Mb памяти, как свидетельствует Windows task manager.

Ищем решение
После того, как мы поняли, что сократить число записей невозможно, мы начали искать способ сократить время переработки и потребление памяти. Наиболее удачным казалось решение, включающее XmlToCursor() и CursorToXml() в процедуру разбора. Вроде бы шаг
назад в технологии, но зато мы получаем реально быструю процедуру обработки файлов. Проблемой этого решения было то, что XmlToCursor() и CursorToXml() не поддерживают передачу в один XML-файл данных их множества курсоров одновременно.


Возврат на основную страницу

К архивам

© Edel Ltd. Все права защищены. 2010 г.

Hosted by uCoz