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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 16.01.2004, 15:48   #1  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,698 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Оптимизация кода X++
Что-то я нигде не нашел на данном сайте как оптимизировать код с точки зрения производительности.

Мне дали доработать некий класс, который занимается выбрасыванием в текстовый файл некоторой выборки. Время выполнения этого класса очень велико. В оригинале примерно 5тыс записей выводились около 10 минут.

Ну хорошо, ввожу я свои исправления в код класса. Но как проверить насколько ускорит (замедлит) моя модификация весь процесс?

Сейчас я действую примерно так:

PHP код:
timenowBegin=timenow();
// некий код
info("Время выполнения кода "+int2str(timenow()-timenowBegin)) 
Проблема в том, что если один и тот же код запустить два...три раза подряд, то интервал времени сильно "гуляет". Разница может достигать 50%.

Как можно оценить насколько реально изменится время выполнения кода?

PS: я работаю в 3-х звенке.
Старый 16.01.2004, 16:07   #2  
Ruff is offline
Ruff
Дмитрий Ерин
Аватар для Ruff
1C
 
475 / 396 (14) ++++++
Регистрация: 18.09.2003
Адрес: Тула
Цитата:
timenowBegin=timenow();
Уж если засекать, то лучше с помощью WinAPI::getTickCount().
Цитата:
Проблема в том, что если один и тот же код запустить два...три раза подряд, то интервал времени сильно "гуляет". Разница может достигать 50%.
Тут надо смотреть тот самый "некий код"...
Старый 16.01.2004, 16:31   #3  
Garic is offline
Garic
NavAx
Аватар для Garic
NavAx Club
 
393 / 63 (3) ++++
Регистрация: 23.07.2002
Адрес: Москва
Для тестирования запросов удобно пользоваться мониторингом (Сервис - Параметры - SQL). Установите там апертуру и выкидывайте в инфолог медленно выполняющиеся запросы.
Double click по запросу в infolog вызывает Мониторинг запросов, в котором можно проанализировать запрос. Посмотрев на план исполнения увидите используются ли индексы, может нужно какой добавить и т.п.
__________________
С уважением, Игорь Ласийчук.
Старый 16.01.2004, 16:49   #4  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
для оптимизации остального кода пользуйтесь профайлером.
Старый 16.01.2004, 18:15   #5  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,698 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
По порядку:
Цитата:
Тут надо смотреть тот самый "некий код"...
Вопрос ведь не об оптимизации конкретного кода, а о том, как узнать, что мои действия привели именно к оптимизации, а не к обратному результату


Цитата:
Для тестирования запросов удобно пользоваться мониторингом (Сервис - Параметры - SQL)
В данном случае запросы как раз короткие. Просто их очень много. Постоянный повтор в цикле. Это кроме разных if...


Цитата:
для оптимизации остального кода пользуйтесь профайлером
Профайлер - это несколько не то. У меня всего один метод, который очень долго выполняется и мне надо посмотреть сколько времени тратится на выполнение разных его фрагментов.
Старый 16.01.2004, 18:32   #6  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
Цитата:
В данном случае запросы как раз короткие. Просто их очень много. Постоянный повтор в цикле. Это кроме разных if
В этом случаи, в качестве критерия лучше использовать количество запросов к SQL-серверу.

Если их кол-во уменьшится, и при этом длительность запросов не возрастет, то вы добились нужного результата.
Так как и Аксапта и SQL-сервер умеют кэшировать данные, то запуская на одних и тех же условиях вы будете получать разные времена исполнения, а вот кол-во запросов вряд ли изменится.
Старый 16.01.2004, 19:13   #7  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Изначально опубликовано Владимир Максимов
Профайлер - это несколько не то. У меня всего один метод, который очень долго выполняется и мне надо посмотреть сколько времени тратится на выполнение разных его фрагментов.
Как это не то?
Профайлер показывает время исполнения каждой строки с оператором Х++.

Так, у меня появилось подозрение: Вы о каком профайлере говорите?
Я о аксаптовском. Меню сервис \ Средства разработки \ профайлер кода.
Старый 19.01.2004, 10:47   #8  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,698 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Всем спасибо. Буду разбираться дальше самостоятельно.
Старый 19.01.2004, 15:24   #9  
BOAL is offline
BOAL
Участник
Аватар для BOAL
MCBMSS
Злыдни
1C
Лучший по профессии 2015
 
621 / 453 (17) +++++++
Регистрация: 28.04.2003
Адрес: Москва
еще стоит добавить, что если этот "некий" код обращается к БД, то первое его выполнение может быть длинее последующих (за счет кеширования потом)
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Оптимизация класса Tax Lihgt DAX: Программирование 43 27.05.2022 11:05
Оптимизация кода с LedgerTrans Poleax DAX: Программирование 18 07.11.2008 12:32
Оптимизация кода exodus DAX: Программирование 11 07.11.2007 13:16
проблема с настройкой штрихового кода Nic DAX: Функционал 4 27.12.2004 09:04
Использование штрихового кода (barcode) в Аксапта Pavlo AKA Panok DAX: Функционал 9 17.10.2003 15:13

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

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

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