AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 10.08.2009, 20:00   #6  
glibs is offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4,942 / 911 (40) +++++++
Регистрация: 10.06.2002
Адрес: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
Цитата:
Сообщение от Владимир Максимов
...
кеширование влияет на производительность. Но здесь нет однозначного ответа
...
Если же большинство пользователей работает со всей картотекой номенклатуры, то нет никакого смысла в кешировании.
...
Вы заблуждаетесь. Для "Found" кешировнаие будет работать всякий раз, когда в коде вызывается

InventTable::find(...)

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

Если код работает на сервере приложений, то в таком случае будет лишнее обращение на сервер БД. Номенклатура там скорее всего будет тоже в кеше, поэтому потери производительности вы можете не ощутить визуально. Впрочем, если запускается долгоиграющая периодическая процедура (типа закрытия склада), в которой может очень-очень много раз вызываться InventTable::find(...) подразумевая, что кеширование включено, производительность может просесть заметно. Не говоря уже о лишнем трафике (Аксапта имеет привычку выбирать все поля в записи).

Если же код будет выполняться на клиенте (display методы, если по-хорошему), то потеря производительности при отключении кеширования будет заметна даже невооруженным глазом.

Когда я был помоложе, то тоже увлекался отключением кеширования. Но все-таки пришел к тому, что не стоит.

Вот вам джоб.

X++:
static void glibs(Args _args)
{
    InventTable             inventTable;
    Counter                 i;
    TimeOfDay               startTime,
                            endTime;
    ;

    startTime = timenow();
    for (i = 1; i <= 10000; i++)
    {
        inventTable = InventTable::find("Test");
    }
    endTime = timenow();

    info (strfmt("%1", endTime - startTime));

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

У меня разница приблизительно на порядок получилась.
__________________
С уважением,
glibs®
За это сообщение автора поблагодарили: mazzy (2).
Теги
кэширование

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
А построение перекрестных ссылок опять сожрет всю память и завесит систему нафих Alex_K DAX: Администрирование 15 04.09.2009 22:00
опять про setFocus() на Grid ... =)) NetBus DAX: Программирование 1 15.11.2005 13:52
Опять про кэш (*.aoc) DenisS DAX: Программирование 2 23.01.2004 13:27
Ax 3.0 Некорректное завершение - ошибка. Не лечится. Локальный кэш? dirigente DAX: Администрирование 4 20.11.2003 13:11
кэш клиента andreynikolai DAX: Программирование 1 15.09.2003 18:37
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 06:40.