Имя: Пароль:
1C
1С v8
Вопрос по замеру производительности
0 Mary01
 
11.10.12
16:11
Тестирую отчет, цель - разобраться, на каких именно строках отчет тормозит при работе по сети. Почему-то при каждом запуске замеритель производительности показывает разное время, отличающееся на +-3 секунды, а то и на все 20... Почему так? База файловая, подключаюсь к ней по сети (не терминал).
1 Mafoni
 
11.10.12
16:12
Дай угадаю - наверное потому что база байловая и подключаешся ты к ней по сети!
2 Mary01
 
11.10.12
16:14
(1) - и что? зависит от скорости сети в каждый момент времени что ли?  "Скорости сети" - ну и придумала же фразу. Ну вы поняли о чем я )
3 Живой Ископаемый
 
11.10.12
16:14
потому что в разные моменты нагрузка на железо файл-сервера и клиента разная.
4 Живой Ископаемый
 
11.10.12
16:16
2(2) Почему только сети? От очереди на чтение к диску файл-сервера, от загруженности его проца, от загруженности клиента.
5 Mary01
 
11.10.12
16:24
Ясно, значит, не от 1С зависит. А как же тогда оценить объективно? Вычислять среднее по всем замерам, что ли?
6 Лефмихалыч
 
11.10.12
16:26
(5) так скорость ОБЪЕКТИВНО разная в разное время
7 Mary01
 
11.10.12
16:27
(6) как я тогда пойму, какая строка кода самая тормознутая?
8 Лефмихалыч
 
11.10.12
16:28
(7) запусти на локальной копии, в которой ни кого нет на машине, которую кроме тебя ни кто не трогает
9 Mary01
 
11.10.12
16:32
(8) вот как раз несколько минут назад запускала на локальной, 3 раза, результат - разный!!! Правда, на этой машине многопользовательский ключ 1С стоит, это могло повлиять при условии, что к базам на моем компе кроме меня никто не подключается?
10 ДенисЧ
 
11.10.12
16:33
(7) а прОценты для лохов?
11 DrShad
 
11.10.12
16:34
(7) смотри не на общее время, а на самый большой процент времени выполнения среди строк
12 Mafoni
 
11.10.12
16:34
(9) а ты хочеш каждый раз видеть один и тот же результат (речь идет про время выполнения отчета )?
13 DrShad
 
11.10.12
16:34
+(10) я же как понимаю тебе нужно отчет оптимизировать, а не найти самого быстрого клиента в офисе
14 H A D G E H O G s
 
11.10.12
16:35
(9) Забей.
15 H A D G E H O G s
 
11.10.12
16:35
Ты 2-ой и последующие разы уже на "горячее" запускаешь.
16 H A D G E H O G s
 
11.10.12
16:35
Что под SQL, что под файловой.
17 Mary01
 
11.10.12
16:36
(10),(11) так в том-то и дело, что одна и та же строка в разное время может набирать разный процент.
18 Mary01
 
11.10.12
16:37
(15) то есть, с предыдущего раза какие-то данные попадают? как такое возможно?
19 Mary01
 
11.10.12
16:37
(16) обе файловые
20 H A D G E H O G s
 
11.10.12
16:37
У меня дома под Windows 7 системный кэш через пару дней занимает 13 гиг и всякие УПП летают на ней. Вообще все открывается без обращений к диску практически.
21 DrShad
 
11.10.12
16:37
(18) про кеширование данных слышала?
22 H A D G E H O G s
 
11.10.12
16:38
(18) У тебя Винда в оперативку кэширует базу. Если оперативки мало, кэш освобождается под другие процессы, иногда частично, иногда полностью. Вот и разные результаты.
23 H A D G E H O G s
 
11.10.12
16:39
(18) Забей. Отлаживай несколько самых тяжелых строк
24 H A D G E H O G s
 
11.10.12
16:40
Или давай коннект, я потешу свое любопытство.
25 Mary01
 
11.10.12
16:43
(23) Видимо это и придется делать. все равно самые тяжелые в первой пятерке, хоть и меняются местами между собой, они одни и те же.
26 Живой Ископаемый
 
11.10.12
16:51
2(25) Запускай отчет за какое-то длительное время, все что можно поместится в кэш, потом выполняй его за более коротки промежутки. Но права если в запрос добавляешь новые объекты, то каждый раз как ты это делаешь, то первый раз тоже из замеров можно смело выкидывать.
27 Mary01
 
11.10.12
17:00
Кстати, про кэш. Я так понимаю, что если данные первый раз берутся не из кэша, то это происходит дольше, чем все последующие разы, а последующие, должны работать быстрее и быстрее, хоть на немного (т.к. они уже записались в кэш при первом формировании отчете). Так у меня наоборот, при каждом последующем разе длительность увеличивалась стабильно на 0,4 секунды (я сравнивала самой трудоемкой строке)! Парадокс?
28 hhhh
 
11.10.12
17:03
(27) надо с перезагрузкой компьютера делать. Загружаешь компьютер, делаешь замер, потом перезагружаешь, делаешь второй замер. И так далее.
29 Mary01
 
11.10.12
17:04
(28) шутим )))
30 H A D G E H O G s
 
11.10.12
17:05
(29) Нет.
31 Mary01
 
11.10.12
17:47
Наибольшее время занимают те строки, в которых мы получаем реквизиты документа, например:
ДокОсн   = Док.Счет.Ссылка;
ДатаОплаты = ДокОсн.ДатаОплаты;
ДатаДоставки = ДокОсн.ДатаДоставки;
...
Стр.ДатаДоставки = ДатаДоставки;
...
ДатаОплатыПоДоговору = Док.Дата;
В чем тогда должна заключаться оптимизация? Отказаться от этих строк нельзя - эти данные нужны для расчетов. "Док" - этот документ получаем из выборки запроса. Может быть, тогда  и всё остальное прописать в запросе, а потом получать из выборки?
32 Fragster
 
гуру
11.10.12
17:47
(31) получить 1 раз запросом все нужные данные
33 Kashemir
 
11.10.12
17:48
(31) Тащи значения реквизитов прямо в запросе выборки, чтобы каждый раз к серверу не обращаться
34 Mary01
 
11.10.12
17:52
всем спасибо, перетащу в запрос. так, стоп. а разве суммарное время всех обращений к серверу не равно одному большому обращению к серверу в запросе?
35 Mary01
 
11.10.12
17:54
каким образом Миста определяет, какие строки являются кодом? Я их никак  не выделяла, а они вон красиво в рамочку обвелись?
36 Mary01
 
11.10.12
17:55
почему все затихли? 6 часов - домой пора?
37 Kashemir
 
11.10.12
17:56
(34) Скажем так, само по себе обращение по времени незначительно, а вот подготовка к обращению и возврат результата занимаем много времени.

(35) Скрип ищет ключевые слова конструкций языка и пытается их выделить.
38 timurhv
 
11.10.12
17:56
(34) если было бы равно, тогда запросы циклом писать можно было бы)))
39 Mary01
 
12.10.12
15:38
Перетащила я эти переменные в запрос, стало за 15 секунд формироваться (в исходном отчете - за 19), это у меня. У бухгалтеров еще не тестировала, но думаю, что там разница поболее будет.
Теперь другие строки формируются долго, например, эта:
ЭлементРезультата=ПроцессорКомпоновки.Следующий();
40 Fragster
 
гуру
12.10.12
15:39
выводи не итерационно, а все сразу в макет
41 Mary01
 
12.10.12
17:54
(40) это как - сразу?
Сейчас так:
Пока Истина Цикл
    ЭлементРезультата = ПроцессорКомпоновки.Следующий();
    Если ЭлементРезультата = Неопределено Тогда
     Прервать;
    Иначе
         ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата);
    КонецЕсли;
КонецЦикла;
ПроцессорВывода.ЗакончитьВывод();
42 Fragster
 
гуру
12.10.12
18:16
ПроцессорВывода.Вывести() вместо всего цикла
43 H A D G E H O G s
 
12.10.12
18:44
Девочка учитца.
Похвально.
44 mehfk
 
12.10.12
18:54
Mary0, в Омском времени живем?
45 Адимр
 
12.10.12
19:30
(20) Улет вообщ да? Ты еще ссд диск поставь и от ощущения скорости работы в 1с будешь кончать.
46 vmv
 
12.10.12
19:42
(31) в запрос загоните получение вложенных реквизиотов ссылок или в копоновку, да и вообще если в этом отчете вложенные запросы - то замуж рано, учиться, учиться и учиться как завещал Чак Норрис)
AdBlock убивает бесплатный контент. 1Сергей