0. dmitrydemenew 104 19.03.19 11:20 Сейчас в теме

Методика оптимизации программного кода 1С: проведение документов

Описание простого метода анализа производительности программного кода 1С, способов его оптимизации и оценки результатов в виде числовых показателей прироста производительности. Не требует сторонних программных продуктов, используются только типовые возможности платформ 1С.
Методика проверена на линейке платформ начиная с 1С:Предприятие 8.2 (обычные формы, управляемые формы). Позволяет ускорить проведение проблемных документов в 3 и более раз, провести проверку корректности формирования проводок оптимизированным кодом и подтвердить результаты оптимизации реальными замерами производительности в режиме предприятия.
К публикации приложены демонстрационные базы для режимов обычного и управляемого приложения на платформе 1С:Предприятие 8.3 (8.3.9.2033).

Перейти к публикации

Вознаграждение за ответ
Показать полностью
Комментарии
Избранное Подписка Сортировка: Древо
1. vandalsvq 1081 19.03.19 12:02 Сейчас в теме
(0) правда и ДокументОбъект.Автор.Код тоже не самое оптимальное решение, в таком случае рекомендуется запросом получать значение конкретного поля. А то ведь обращение ДокументОбъект.Автор.(ЛюбойРеквизит) приведет к полному чтению данных ссылки "Автор" и помещению в память на какое-то время
w.r.; CyberCerber; mysm; user-z99999; wowik; +5 Ответить
17. dmitrydemenew 104 19.03.19 14:36 Сейчас в теме
(1)Согласен, с точки зрения правильного кода - да, запрос более оптимальное решение. Еще более оптимальное решение - получение этого параметра, к примеру, функцией модуля с повторным использованием возвращаемых значений. Но в рамках демо-примера ни то ни другое не окажет существенного влияния на производительность, т.к. параметр находится за рамками проблемной зоны кода, за границей цикла. Код в примере - всего лишь тестовая нагрузка, не более.
46. w.r. 209 22.03.19 07:50 Сейчас в теме
(17)
(1)Согласен, с точки зрения правильного кода - да, запрос более оптимальное решение. Еще более оптимальное решение - получение этого параметра, к примеру, функцией модуля с повторным использованием возвращаемых значений. Но в рамках демо-примера ни то ни другое не окажет существенного влияния на производительность, т.к. параметр находится за рамками проблемной зоны кода, за границей цикла. Код в примере - всего лишь тестовая нагрузка, не более.

С модлями с повторным использованием лучше не играться. Если реквизит код или номер документа - еще можно использовать и то с опаской. Если это любой другой реквизит, который с высокой вероятностью может быть исправлен пользователем во время сеанса - то будут возвращаться устаревшие данные. Поэтому лучше всего - это запрос конкретных реквизитов
2. capitan 1167 19.03.19 12:11 Сейчас в теме
Очередная статья и очередной велосипед )
Без обид, методика интересная и имеет право на жизнь.

На мой взгляд, первопричина зависаний и плохой работы программы 1С - неправильное проектирование информационной системы, а потом уже некачественный программный код модулей этой самой 1С.
Оптимизировать программный код можно до опупения, но как правило в 90% есть решение выноса части функционала например на нерабочее время и т.п. в том числе и железячные.
Я конечно 15 лет не изучаю вопросы оптимизации, но загнав tempdb на RAM диск или на SSD если не помещается вы в разы ускорите вашу ситуацию
Поэтому (пишется вместе) в отрыве от реальных событий сложно сказать про данную методику, тем более она на обычных формах.
PLAstic; Идальго; Irwin; fancy; wowik; +5 Ответить
3. user-z99999 18 19.03.19 12:35 Сейчас в теме
(2)
Складывается впечатление, что вы стараетесь кого-то обидеть своими комментариями.
Я конечно 15 лет не изучаю вопросы оптимизации, но загнав tempdb на RAM диск или на SSD если не помещается вы в разы ускорите вашу ситуацию

Очень мощный сервер может спрятать недостаток опыта плохого программиста, иногда.
CyberCerber; oleg-x; Rustig; +3 Ответить
8. capitan 1167 19.03.19 13:15 Сейчас в теме
(3)Я же написал - без обид.
И обидеть никого не хочу.
Просто мне например не хватает информации из публикации, а заявление что tempdb - зло я не принимаю.
Если не слишком удачно скрестить виртуальные таблицы то у вас оптимизатор БД выберет сканирование таблиц, что на базе 500 Гб будет фиаско.
Отсюда tempdb и вырос в 1С и во всех языках даже чистом SQL он есть
GOshaSaveiko; bulpi; GreenDragon; wowik; pavlov_dv; Vladimir Litvinenko; +6 Ответить
9. dmitrydemenew 104 19.03.19 13:37 Сейчас в теме
(8) Основные факторы, определяющие мое отношение к этой проблеме таковы:
1. Реально наблюдаемое огромное количество трудоемких физических операций с жестким диском, в разы превышающих число операций с БД хранения и вызванных обработкой временных данных (обоснование во вложении).
2. В результате выполнения этих трудоемких операций, что вполне логично при их критическом увеличении, "зависает" 1С и пользователи программы ощущают существенное неудобство.
3. Я, как специалист, отвечающий за отсутствие этого неудобства, недоволен источником этих неудобств, и был бы рад, если бы использование этого инструмента (ВТ) было всегда технически обоснованным.

Это исключительно мое личное мнение и я его никому не навязываю.
Прошу всех не обсуждать и не поднимать тему использования ВТ в рамках этой публикации.
Прикрепленные файлы:
14. capitan 1167 19.03.19 14:21 Сейчас в теме
(9)дело в том, что скорость работы 1С при правильном написании кода не зависит от размера базы, до тех пор пока не начинается сканирование таблиц разумеется.
В идеале 2 Гб и 2 Тб базы должны вам информацию с регистра остатков например поднять с одинаковой скоростью тем более с SSD
И если этого не происходит, то ни фига это не во ... таблицах дело
В принципе в ... таблице откуда взяться такому большому объему ? если вы предварительно фильтры накладываете разумеется
Т.е. надо брать профайлер и долго курить ваши запросы
Тогда может и не надо будет так скрупулезно замерять результат оптимизации - вы его услышите по крикам ура и брызгам шампанского из бухгалтерии )
33. GreenDragon 20.03.19 17:47 Сейчас в теме
(9) Судя по вашему скрину, время ответа по вашим выделенным строкам 12 и 14 мс. Вы где-то увидели проблему? То, что длина очереди 5, практически ни о чём не говорит.

Процитирую статью с sqlcom.ru

Правило, по которому глубина очереди не должна для одного диска превышать 2 (и другие сопутствующие признаки) не соотносятся напрямую с глубиной очереди, определённой по счётчикам производительности операционной системы. Таким образом, получило распространение несколько иное правило, гласящие, что задержки при обращении к диску не должны превышать примерно 10 – 20 ms, что было вычислено из прежнего правила глубины очереди 2 на диск (вероятно, для дисков с 7200/10000 об/мин), причём, без учёта описанных выше дополнительных признаков.
34. dmitrydemenew 104 20.03.19 17:51 Сейчас в теме
(33)Вот только длина очереди не 5, а 50...
38. asved.ru 36 21.03.19 08:13 Сейчас в теме
(9)
Прошу всех не обсуждать и не поднимать тему использования ВТ в рамках этой публикации.


В таком случае не следовало рекомендовать отказ от использования временных таблиц. Сейчас же получается, что Вы даете откровенно вредную рекомендацию и просите ее не обсуждать. В джентльменском обществе за такое канделябром бьют :)
Wdivine; PLAstic; +2 Ответить
39. dmitrydemenew 104 21.03.19 08:21 Сейчас в теме
(38)В публикации нет рекомендаций отказа от временных таблиц, есть лишь рекомендация использовать этот инструмент обдумано и технически обосновано.
41. TODD22 17 21.03.19 10:12 Сейчас в теме
(39)
есть лишь рекомендация использовать этот инструмент обдумано и технически обосновано.

Но про техническое обоснование ни слова... про обдуманность то же...
43. dmitrydemenew 104 21.03.19 10:35 Сейчас в теме
(41) Повторюсь: предложенная методика дет возможность измерить обоснованность (с точки зрения производительности) использования любых способов построения программного кода в цифрах. Все мои выводы основаны исключительно на результатах этих измерений в информационных системах, которые мне приходилось оптимизировать.
44. starik-2005 1838 21.03.19 10:45 Сейчас в теме
(41) так статья не ставит цель рассказать, что такое обоснованность и обдуманность - она для этого по формату не пройдет на сайт, ибо модератор не сможет дочитать произведение, в полной мере раскрывающее вышеописанное, до конца. Есть совершенный код Макконнелла, есть труды Дейкстры, Вирта, Кнута - не нужно тут про обоснованность и обдуманность, ибо читающие должны быть с приведенными литературными произведениями как минимум ознакомлены.

Другое дело, что автор статьи не привел список литературы, которая могла бы помочь обосновать и обдумать. В те времена, когда пионеры были большими, пруфы даже в школьных докладах были. Но в российской действительности указать ссылки на дополнительные или используемые материалы редко кто способен (видимо, кризис высшего образования), поэтому я современную русскую литературу по бизнесу и прочему стараюсь не читать.
5. dmitrydemenew 104 19.03.19 12:40 Сейчас в теме
(2)На моем текущем месте работы не только tempdb, но и все рабочие базы расположены на SSD. Напоминаю, что все мои рассуждения и выводы относятся исключительно к крупным и высоконагруженным информационным системам. Лично мне сейчас приходится работать с базами, средний размер которых более 500 ГБ и расположены они на топовом серверном оборудовании.
"Поэтому" исправил, действительно глаза режет, спасибо. Представленная методика не зависит от режима запуска 1С. Во вложении демки для вариантов запуска как в режиме управляемых, так и обычных форм.
4. user-z99999 18 19.03.19 12:36 Сейчас в теме
Автор молодец, почти воспроизвел APDEX "Оценка производительности" из БСП.
PLAstic; Irwin; A_Max; +3 Ответить
6. VmvLer 19.03.19 12:58 Сейчас в теме
практическая ценность тестов в каких-то демо-базах сомнительна.

я не призываю светить тут учетные данные баз от 500 гб., но только выводов по результатам
тестирования недостаточно. Необходимы визуальные результаты(статистика) тестов именно по таким базам.
7. dmitrydemenew 104 19.03.19 13:13 Сейчас в теме
(6)Практическая ценность этих тестов не сомнительна - она отсутствует. Эти демо-базы только для того, чтобы перед принятием решения, использовать или нет описанную методику в рабочем режиме, опробовать ее в тесте и предварительно оценить результат ее работы.
10. user-z99999 18 19.03.19 13:58 Сейчас в теме
(7)
Может следующая статья будет про ошибки (время выполнения) в запросах 1с, оптимизация ?
Т.е. как было и как исправили. Например, самые частые ошибки.
11. dmitrydemenew 104 19.03.19 14:05 Сейчас в теме
12. capitan 1167 19.03.19 14:10 Сейчас в теме
(10)А вы бы не хотели то же самое почитать на ИТС ?
Так сказать из первоисточника
13. user-z99999 18 19.03.19 14:17 Сейчас в теме
(12)
Первоисточник -это хорошо.
Просто любопытно, какие ошибки самые частые у программистов 1с.

Например, ИТС рекомендует делать индексы на временные таблицы, а по факту - это замедляет работу запроса.
На ИТС не показано во что превращается запрос 1с на MS SQL сервере, когда поля составные.
Вот и хочется в жанре ужасы почитать ))

Ещё,
фирма 1с придумала объектную модель обращения к данным, чтобы программисты 1с использовали её, а не запросы.
Т.е. чтобы 1с работала не слишком быстро ))
alest; bulpi; sergathome; +3 Ответить
47. buganov 56 05.05.19 09:59 Сейчас в теме
(15)

При написании запросов не следует использовать соединения с подзапросами. Следует соединять друг с другом только объекты метаданных или временные таблицы. Если запрос использует соединения с подзапросами, то его следует переписать с использованием временных таблиц.


кэп, а Вы пробовали загнать несколько миллионов записей во временную таблицу? Или не так, а что будет, если сделать соединение с подзапросом, где на одном из уровней будет таблица данных? Что в таком случае покажет план запроса? Вот долго я ломал голову, а с чего это вендор, у которого есть экзамен Эксперт по технологическим вопросам такие советы дает. Оказалось просто. Постгре не умеет работать с подзапросами, потому и MS SQL досталось на орехи.

Временные таблицы не зло, это умеренное зло, если в конкретно данном случае, в конкретно данной задаче они обоснованы и производительнее, чем подзапрос.
51. capitan 1167 05.05.19 12:22 Сейчас в теме
(47)Честно скажу я с трудом могу представить задачу в которой нужно загнать несколько миллионов записей во временную таблицу.
План запроса вероятно покажет фулл скан с таблицей из которой у вас во временную с отборами набралось несколько миллионов записей
Не понял вопроса.
Что касается рекомендации - она намного раньше дружбы с постгри появилась.
Да и при таком масштабе задач опять же только по моему мнению уже не до экономии на лицензиях
53. buganov 56 05.05.19 14:54 Сейчас в теме
(51)Элементарно, Ватсон, продажи за месяц в нескольких разрезах дают огромный поток данных. И, если обороты загнать во временную, то пользовательский кеш сразу выталкивается наружу.

Вопрос был в том, что Вы лично смотрели, как ведет высоконагруженная система с запросом с временной таблицей и подзапросом?

По поводу рекомендации, да, раньше, но и MS SQL раньше не очень дружил с подзапросами
56. capitan 1167 06.05.19 09:53 Сейчас в теме
(53)Я что то начал терять нить вашего возмущения.
Вы постом раньше были за подзапросы, а в этом посте вроде против.
Миллиона записей о продажах за месяц у меня нет
16. capitan 1167 19.03.19 14:28 Сейчас в теме
(13)И тут Остапа понесло...
Ещё, фирма 1с придумала язык 1С чтобы программисты 1с использовали его, а не ассемблер )
18. dmitrydemenew 104 19.03.19 15:28 Сейчас в теме
(16) Я считаю платформу 1С - лучшей средой разработки. А язык 1С - лучшим для решения задач по автоматизации любых процессов, и пока что не встречал ни одной задачи, которую бы нельзя было решить быстро, удобно и качественно доступными в 1С средствами .
20. user1180228 19.03.19 16:36 Сейчас в теме
(18) Изучаю 1С почти год, до этого был опыт в других языках. Насчет быстро и удобно, это не совсем правда. Нет наследования и классов, без чего практически линейное программирование в 1с. А это прошлый век!
30. A_Max 16 20.03.19 09:54 Сейчас в теме
(20) Всё как обычно 80/20 (А в нашем случае я думаю выйдет даже 90/10). Т.е. для реализации подавляющего большинства задач мощь ООП с наследованием и полиморфизмами не нужны. И, мало этого, при их наличии провоцировало бы неокрепшии умы на творческие экзерцисы которые было бы нетривиально сопровождать.

Частенько задумываюсь, что хотелось бы иметь полноценные свойства объектов с обработчиками get/set. Но опять таки это плюшки и "синтаксический сахар".
48. buganov 56 05.05.19 10:03 Сейчас в теме
(20) Вы тут лукавите, классы есть, достаточно взглянуть на дерево метаданных.
Про наследование. А для чего оно здесь? Что Вы собираетесь наследовать и для чего?
Плохо Вы изучаете 1С, если до сих пор не поняли, что этот "прошлый век" выполняет функции автоматизации бизнеса, и справляется в этом очень даже хорошо. И без наследования и смс.

Вот банальный пример. Нужно написать небольшую автоматизацию, скажем, киоска.
Даны два ЯП - 1С и любой тру на Ваш выбор. Как Вы думаете, кто быстрее автоматизирует киоск, тру или "парапрограммист" 1С? Ответ очевиден, и микроскопом можно гвоздь забить, но зачем?
50. acanta 48 05.05.19 11:07 Сейчас в теме
(48) итак мы вернулись к тому с чего начали. Конкуренция за автоматизацию киосков это хорошо.
Вроде как раньше узким местом была стоимость компьютера с 256 мб памяти. Сегодня- наличие мобильной связи на телефоне с 5 Гб оперативки.
52. buganov 56 05.05.19 14:54 Сейчас в теме
(50) Я совсем не понял, что Вы хотели этим сказать
57. user1180228 07.05.19 08:25 Сейчас в теме
(48) Быстрее всего я напишу на BSScript, похожая на 1С система, только в разы продвинутая. 1С - это что? - Готовые объекты, которые заточены на выполнение каких то стандартных операций. Как только отступление - танцы с бубнами и никакой оптимизации. Да много COM приложений. А без COM и ни туды и ни сюды... Хотите нормальный функционал - пишите COM, а это очень увеличивает время разработки. 1С есть куда развиваться.

По поводу бизнеса также не согласен, бизнес стонет от "тормозов" 1C.
58. buganov 56 07.05.19 09:53 Сейчас в теме
(57)Ок, давайте представим, что Вы сделали свою шикарную систему автоматизации киоска. Все работает отлично и гораздо быстрее, чем 1С. И вот, в один прекрасный момент у Вашего заказчика наступил момент, когда бизнес вырос с этапа счетов до калькулятора. Вы будете пару месяцев дорабатывать свою систему и даже что то получится на выходе. Не ERP, конечно, но уже и не эксель. И тут Вы поняли, что жизнь проживается зря, а внутри рвется художник, и вообще, программирование для других, Ваше же дело жизни - руководить. Скажем, менеджером проектов где-нибудь в Италии, на берегу моря. И что делать Вашему заказчику? Правильно. Искать специалистов. Но, как Вы думаете, легко ему это будет сделать? Нет. Легко масштабировать свою систему? Тоже нет. Если из УТ можно довольно просто эволюционировать в комплексную, а там в ERP, то Вашими усилиями будет убита сама идея автоматизировать бизнес, который, к слову, далеко не глупый и выбирает 1С не просто, что где-то слышал, а как возможность сделать свою систему, при этом без слишком высоких трудозатрат на поиски программиста. Это так, лирика.

По поводу отступлений. А бизнесу оно надо? Я успел поработать с огромным количеством компаний и, представьте себе, только пару раз требовалось изобрести что то этакое, но и тем же комом решалось. И то, потому что другие приложения чаще всего не дают апи для работы из вне.

По поводу стонов бизнеса, то тут банально. Легкий вход в профессию плодит недоучек, которые не хотят разбираться, а как, собственно, все устроено и пишут крайне вредный для производительности код, который впоследствии и вызывает стоны.

Да, 1С есть куда развиваться, ИЧСХ она и делает.
59. starik-2005 1838 07.05.19 10:00 Сейчас в теме
(58)
Правильно. Искать специалистов. Но, как Вы думаете, легко ему это будет сделать? Нет. Легко масштабировать свою систему? Тоже нет.
Вот! Золотые слова. Поэтому берете астрального питонщика или PHP-шника и не мучаетесь всякими БССкриптами или чем-там-еще. И никакого 1С, никаких лицензий, дешевые разработчики, которых в западном индостане девать некуда, масштабируемость отличная - хоть киоск, хоть фэйсбук (на пентиуме 1-м даже), ...
60. buganov 56 07.05.19 11:55 Сейчас в теме
(59)PHPшники ох как дорого стоят хорошие)
61. starik-2005 1838 07.05.19 13:31 Сейчас в теме
(60)
PHPшники ох как дорого стоят хорошие)
Индусы? Да они за тарелку супа готовы душу продать! )))
28. GreenDragon 20.03.19 09:49 Сейчас в теме
(16) И на что только люди не пойдут, чтобы не набирать машинный код сразу...
bulpi; capitan; acanta; +3 Ответить
32. capitan 1167 20.03.19 17:07 Сейчас в теме
(28)Это еще что. На что люди пошли чтобы безгранично коннектиться посредством блюпуп и вифи.
А как хорошо было раньше.

Один пpогpаммеp пpишел в гости к дpугому. Сидят, пиво попивают. Тут на кухню заваливает огpомный сеpый котяpа.
- Это мой кот. Зовут Модем.
- Почему Модем?
- Смотpи. - беpет веник, тычет в кота. - Модем! Коннект!
(Кот): - Шшшшшшшшш...
19. VmvLer 19.03.19 16:23 Сейчас в теме
1. возьмите свою базу в 500 гиг
2. напишите отчет где есть интенсивное обращение к многим оборотным регистрам, регистрам сведений и пр. с количеством записей в таблицах 100-500КК.
3. Напишите вариант отчета из пункта 2 с грамотным использованием ВТ в фильтрах виртуальных таблиц
3.1. Предложите, чтобы 100 пользователей единовременно в течение часа формировали отчет из п.3 с одним и тем же набором "жирных" фильтров
3.2. Соберите статистику по "загрузке" дисков, памяти, процессора, замеры времени сколько работал SQL и сколько сервер приложений 1С "жевал" то, что отдал SQL и пр.
4. Напишите вариант отчета из пункта 2 БЕЗ использования ВТ
4.1. Предложите, чтобы 100 пользователей единовременно в течение другого часа формировали отчет из п.4 с одним и тем же набором "жирных" фильтров как в. 3.
4.2. Соберите статистику по "загрузке" дисков, памяти, процессора замеры времени сколько работал SQL и сколько сервер приложений 1С "жевал" то, что отдал SQL и пр.
5. Сделайте сравнительный анализ п.3.2 - 4.2.

Только после сверки можно делать выводы и пенять на код.
21. user1180228 19.03.19 16:54 Сейчас в теме
(19) Тема интересная но так "просто" не решаемая. Для оценки производительности нужно собирать стенд и там проводить исследование производительности. Я так понял, что никто этого еще не делал.
Согласен с автором статьи, что неоптимизированный код влияет на производительность.
22. dmitrydemenew 104 19.03.19 17:10 Сейчас в теме
(19)предложенная методика как раз содержит инструменты, позволяющие выполнить Ваш алгоритм без издевательств над нашими пользователями - достаточно запустить необходимое количество нагрузочных сессий с выполнением необходимых алгоритмов. Предлагаю Вам воспользоваться предложенными инструментами и поделиться результатами исследований - это будет лучшим доказательством Вашей правоты.
23. starik-2005 1838 19.03.19 21:58 Сейчас в теме
Результат = СтрШаблон("%1%2%3%4%5", Результат, СокрЛП(КодАвтора), Лев(КодАвтора,1), Сред(КодАвтора, 2, 1), Прав(КодАвтора,1));
A_Max; metmetmet; +2 Ответить
26. PerlAmutor 35 20.03.19 07:10 Сейчас в теме
(23) Тогда уж:

КодАвтора = СокрЛП(ОбщегоНазначенияУТВызовСервера.ЗначениеРеквизитаОбъекта(ДокументОбъект.Автор, "Код"));
Шаблон = "%1%2%3%4%5";
ЛевКодАвтора = Лев(КодАвтора);
СредКодАвтора = Сред(КодАвтора, 2, 1);
ПравКодАвтора = Прав(КодАвтора, 1);
Для а = 1 По 1000 Цикл
    Результат = СтрШаблон(Шаблон, Результат, КодАвтора, ЛевКодАвтора, СредКодАвтора, ПравКодАвтора);
КонецЦикла;
Показать
29. starik-2005 1838 20.03.19 09:50 Сейчас в теме
(26) сам код как я понял у автора демонстрационный. Правильнокодавтора (или что иное) брать из результата запроса, а не из ссылки. Здесь автор не учел, что платформа ссылки кеширует. То, что он называет здесь оптимизацией - это просто придуманная проблема, которая красиво отобразилась в топе длительных операций. Статья о том, как искать проблему, а не о том, как ее решать. Ценность данного произведения отсюда ИМХО мала предельно
insurgut; +1 Ответить
45. TODD22 17 21.03.19 11:51 Сейчас в теме
(29)
Статья о том, как искать проблему, а не о том, как ее решать.

Как пользоваться замером производительности.
42. starik-2005 1838 21.03.19 10:33 Сейчас в теме
(26) тогда уж:
КодАвтора = СокрЛП(ОбщегоНазначенияУТВызовСервера.ЗначениеРеквизитаОбъекта(ДокументОбъект.Автор, "Код"));
ЛевКодАвтора = Лев(КодАвтора);
СредКодАвтора = Сред(КодАвтора, 2, 1);
ПравКодАвтора = Прав(КодАвтора, 1);
ИтогоКодАвтора = СтрШаблон("%1%2%3%4", КодАвтора, ЛевКодАвтора, СредКодАвтора, ПравКодАвтора);
Для а = 1 По 1000 Цикл
    Результат = СтрШаблон("%1%2", Результат, ИтогоКодАвтора);
КонецЦикла;
31. A_Max 16 20.03.19 09:56 Сейчас в теме
(23) Да вообще когда уже полноценную форматную строку сделают printf :(
24. 3vs 20.03.19 06:50 Сейчас в теме
"К публикации приложены демонстрационные базы для режимов обычного и управляемого приложения на платформе 1С:Предприятие 8.3 (8.3.9.2033)."

А БП3 уже требует платформы
"Внимание! Текущая версия конфигурации "Бухгалтерия предприятия" предназначена для использования с версией технологической платформы 1С:Предприятие 8 не ниже 8.3.12.1685."
Не подустарела информация?

И, не пора ли уже предложить 1С добавить поддержку в сервере СУБД в оперативной памяти, таких как СУБД для данных в оперативной памяти, обеспечивающие их сохранность: Redis, Aerospike, Tarantool?
А то, с каждым обновлением платформы, базы работают всё медленней...
25. dmitrydemenew 104 20.03.19 07:03 Сейчас в теме
(24) В публикации описана методика, которую можно применить в любой конфигурации на любой платформе 1С V8.x.
27. 3vs 20.03.19 08:26 Сейчас в теме
35. Serg O. 171 20.03.19 23:29 Сейчас в теме
во многих конфигурациях - есть обработка "Групповая обработка справочников и документов"
простейшее "нагрузочное" тестирование можно аналогично сделать...

однако, это "чистое" движение (проведение) - не открывая формы документа !? и не возвращаясь в список документов... в котором может быть куча подзапросов и "авторасчетов", расцветки и т.п.

стандартный замер - прекрасная вещь
и в дополнение к нему можно использовать УниверсальныеПодборИОбработкаОбъектов.epf
с диска ИТС - в ней кроме отборов можно делать "произвольный алгоритм"... в том числе открывать и закрывать формы... и что угодно делать кроме этого

******* автору для его разработки (увидел в листинге) *****
1) Таймер() - скорее всего какая-то "своя" функция... лучше заменить на 1С-кую ТекущаяУниверсальнаяДатаВМиллисекундах() - даже в 8.2 есть (с 8.2.19.83 версии точно)

2) вывод...из просто сообщить()... лучше сделать запись в текстовую переменную
а потом её можно и сообщить() и в Текстовый / HTML-Файл (для красоты)... сохранять

3) хорошо оформлена статья, спасибо, удобно читать было
+
36. itmind 246 21.03.19 07:03 Сейчас в теме
Очередная статья, в которой говорится, что временные таблицы - зло. Но у меня другой пример.
Штатный отчет Валовая прибыль из УПП 1.3 (УТ 10.3). Простой запрос, где левым соединением выборка из таблицы себестоимости.
Вставляем этот запрос в СКД один в один, запускаем на базе > 600Гб и получаем зависания на 2-3 часа (при этом иногда выполняется быстро, за несколько секунд). При этом сам запрос, не в СКД, выполняется очень быстро.
Переписываем запрос в СКД на временные таблицы и все работает быстро, никаких зависаний. Предполагаю, что оптимизатор SQL лучше работает на временных таблицах.
Исходя из данной проблемы можно сказать, что вложенные запросы в соединениях еще большее зло, чем временные таблицы.
37. dmitrydemenew 104 21.03.19 07:50 Сейчас в теме
(36)В этой статье нет ни слова о том, что ВТ - зло. Единственное назначение публикации - описание одного из множества способов анализа и оценки оптимизации программного кода модулей проведения документов. С помощью предложенной методики вы можете сами объективно оценить ту роль (позитивную или негативную), которую играет использование ВТ в проблемных местах Вашей информационной системы.
55. dmurk 91 05.05.19 17:53 Сейчас в теме
(37) И вообще, индексация временных таблиц творит чудеса ))
40. ELInfinito 21.03.19 08:28 Сейчас в теме
(36) Запрос в СКД может работать иначе, чем исполнение в консоли запросов или просто кодом.
Причина проста - СКД трансформирует запрос по неким своим принципам и на сервер улетает совсем не то, что написали вы в наборе/наборах данных .
Далеко не факт, что применение временных таблиц поможет...но я не говорю, что это зло ) В контексте 1С их здравое применение решает. Если временные таблицы применяет неофит, натыкивая их везде где надо и не надо. да еще и индексируя все подряд...это конечно зло )
49. buganov 56 05.05.19 10:09 Сейчас в теме
(36) а этот запрос Вы берете прямо из СКД, который она сама развернула или то, что пишете в конструкторе?
СКД иногда пихает отборы так криво, что образуются дополнительные соединения с таблицами, отсюда и просадка.
54. dmurk 91 05.05.19 17:50 Сейчас в теме
На текущем этапе развития (для меня) статья не актуальна. Пару замечаний
- Получение в коде временных отметок имеет крайне высокую гранулярность, на моем тестовом сервере это 43 миллисекунды, что делает неэффективным подобный механизм на измерениях оптимизированных запросов
- Погрешность отклонения в замерах производительности может составлять 200 миллисекунд
- Параллельные способы выполнения кода в кластере 1С могут не только снижать скорость выполнения отдельных строк кода, но и повышать скорость обмена данными между модулями объектов и общими модулями
Всем успехов!
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Автор новостных обзоров на тему 1С и бухучета
Санкт-Петербург
По совместительству

Программист 1С
Санкт-Петербург
зарплата до 120 000 руб.
Полный день

Программист 1С
Новосибирск
зарплата от 80 000 руб.
Полный день

Руководитель отдела внедрения 1С
Новосибирск
зарплата от 60 000 руб. до 160 000 руб.
Полный день

Ведущий программист 1С
Москва
зарплата от 120 000 руб. до 150 000 руб.
Полный день