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

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

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

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

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

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

Это исключительно мое личное мнение и я его никому не навязываю.
Прошу всех не обсуждать и не поднимать тему использования ВТ в рамках этой публикации.
Прикрепленные файлы:
14. capitan 1192 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 106 20.03.19 17:51 Сейчас в теме
(33)Вот только длина очереди не 5, а 50...
38. asved.ru 36 21.03.19 08:13 Сейчас в теме
(9)
Прошу всех не обсуждать и не поднимать тему использования ВТ в рамках этой публикации.


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

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

Другое дело, что автор статьи не привел список литературы, которая могла бы помочь обосновать и обдумать. В те времена, когда пионеры были большими, пруфы даже в школьных докладах были. Но в российской действительности указать ссылки на дополнительные или используемые материалы редко кто способен (видимо, кризис высшего образования), поэтому я современную русскую литературу по бизнесу и прочему стараюсь не читать.
5. dmitrydemenew 106 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 106 19.03.19 13:13 Сейчас в теме
(6)Практическая ценность этих тестов не сомнительна - она отсутствует. Эти демо-базы только для того, чтобы перед принятием решения, использовать или нет описанную методику в рабочем режиме, опробовать ее в тесте и предварительно оценить результат ее работы.
10. user-z99999 18 19.03.19 13:58 Сейчас в теме
(7)
Может следующая статья будет про ошибки (время выполнения) в запросах 1с, оптимизация ?
Т.е. как было и как исправили. Например, самые частые ошибки.
11. dmitrydemenew 106 19.03.19 14:05 Сейчас в теме
12. capitan 1192 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 57 05.05.19 09:59 Сейчас в теме
(15)

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


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

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

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

По поводу рекомендации, да, раньше, но и MS SQL раньше не очень дружил с подзапросами
56. capitan 1192 06.05.19 09:53 Сейчас в теме
(53)Я что то начал терять нить вашего возмущения.
Вы постом раньше были за подзапросы, а в этом посте вроде против.
Миллиона записей о продажах за месяц у меня нет
16. capitan 1192 19.03.19 14:28 Сейчас в теме
(13)И тут Остапа понесло...
Ещё, фирма 1с придумала язык 1С чтобы программисты 1с использовали его, а не ассемблер )
18. dmitrydemenew 106 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 57 05.05.19 10:03 Сейчас в теме
(20) Вы тут лукавите, классы есть, достаточно взглянуть на дерево метаданных.
Про наследование. А для чего оно здесь? Что Вы собираетесь наследовать и для чего?
Плохо Вы изучаете 1С, если до сих пор не поняли, что этот "прошлый век" выполняет функции автоматизации бизнеса, и справляется в этом очень даже хорошо. И без наследования и смс.

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

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

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

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

Да, 1С есть куда развиваться, ИЧСХ она и делает.
59. starik-2005 1856 07.05.19 10:00 Сейчас в теме
(58)
Правильно. Искать специалистов. Но, как Вы думаете, легко ему это будет сделать? Нет. Легко масштабировать свою систему? Тоже нет.
Вот! Золотые слова. Поэтому берете астрального питонщика или PHP-шника и не мучаетесь всякими БССкриптами или чем-там-еще. И никакого 1С, никаких лицензий, дешевые разработчики, которых в западном индостане девать некуда, масштабируемость отличная - хоть киоск, хоть фэйсбук (на пентиуме 1-м даже), ...
60. buganov 57 07.05.19 11:55 Сейчас в теме
(59)PHPшники ох как дорого стоят хорошие)
61. starik-2005 1856 07.05.19 13:31 Сейчас в теме
(60)
PHPшники ох как дорого стоят хорошие)
Индусы? Да они за тарелку супа готовы душу продать! )))
28. GreenDragon 20.03.19 09:49 Сейчас в теме
(16) И на что только люди не пойдут, чтобы не набирать машинный код сразу...
bulpi; capitan; acanta; +3 Ответить
32. capitan 1192 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 106 19.03.19 17:10 Сейчас в теме
(19)предложенная методика как раз содержит инструменты, позволяющие выполнить Ваш алгоритм без издевательств над нашими пользователями - достаточно запустить необходимое количество нагрузочных сессий с выполнением необходимых алгоритмов. Предлагаю Вам воспользоваться предложенными инструментами и поделиться результатами исследований - это будет лучшим доказательством Вашей правоты.
23. starik-2005 1856 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 1856 20.03.19 09:50 Сейчас в теме
(26) сам код как я понял у автора демонстрационный. Правильнокодавтора (или что иное) брать из результата запроса, а не из ссылки. Здесь автор не учел, что платформа ссылки кеширует. То, что он называет здесь оптимизацией - это просто придуманная проблема, которая красиво отобразилась в топе длительных операций. Статья о том, как искать проблему, а не о том, как ее решать. Ценность данного произведения отсюда ИМХО мала предельно
insurgut; +1 Ответить
45. TODD22 17 21.03.19 11:51 Сейчас в теме
(29)
Статья о том, как искать проблему, а не о том, как ее решать.

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

Вакансии

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

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

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


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