Разница во времени исполнения кода

1. DENSKR 16 27.11.24 23:58 Сейчас в теме +4 $m
Кто нибудь мерил: разницу во времени исполнения кода, когда пишешь в конфигураторе построчно или же в одну строку, и какие бы функции/методы вы писали бы в одну строку?

Дело в том, что я где то натыкался на цикл в Одну строку (причем не важен объект данных), который срабатывает быстрее чем построчно, платформа, иллюминаты, инопланетяне, матрица или всё таки платформа с релизом платформы влияют?

Или во всем виноват режим отладки?

А если без режима отладки наблюдаются ускорения обработки кода в одну строку причем на разных платформах?
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. SlavaKron 28.11.24 04:44 Сейчас в теме +1 $m
7. DENSKR 16 28.11.24 10:45 Сейчас в теме
(2) Отличная статья, спасибо! Единственное не раскрыта тема выполнения производного кода построчно или же в одну строку через метод
Выполнить(КодПострочноИлиКодВСтроку)
8. DENSKR 16 28.11.24 10:55 Сейчас в теме
3. Vlan 36 28.11.24 09:00 Сейчас в теме
(1) С секундомером не мерил. Делал в одну строку на пробу в конфигурации для велосоревнований. Особой разницы не ощутил. Циклов там немного, может поэтому.
Для интереса сейчас сделал в одну строку обработку, ежесуточно по ночам выгружающую документы на сайт. В среднем она работала у меня 8-11 минут. Завтра посмотрю, как изменится время.
17. Vlan 36 29.11.24 06:42 Сейчас в теме
(3) Что-то у меня даже дольше выгружалось. От количества документов, конечно зависит - каждый день по-разному. Надо еще проверить.
4. Denis_CFO 49 28.11.24 10:14 Сейчас в теме
(1) а какая разница, одна строка или несколько? Код же не в этом виде исполняется программой. Он всё равно потом преобразовывается в машиночитаемый.
5. SlavaKron 28.11.24 10:21 Сейчас в теме
(4) Как тогда отладка поймет к какой строке кода относится исполняемый код?
10. user2107191 28.11.24 11:17 Сейчас в теме
6. user1863362 28.11.24 10:25 Сейчас в теме
(4)
а какая разница
У 1С в байткоде есть специальный опкод с номером строки. Чтобы те, кто поставляют модули без исходных текстов, могли понимать к чему относится "Поле агрегатного объекта не обнаружено {30}"
starik-2005; +1 Ответить
18. starik-2005 3166 29.11.24 11:43 Сейчас в теме
(1)
я где то натыкался на цикл в Одну строку (причем не важен объект данных), который срабатывает быстрее чем построчно
Ну и кто тебе мешает его еще раз написать?

Есть где-то тут статейка про 1С-"ассемблер" (байт-код виртуальной машины "сервера приложений 1С"), который отдельный код для строки создает. Когда код в одну строку, то этого кода строки нет, что ускоряет работу "эффективных циклов", когда каждая или большинство строк - это команды уровня "А = А + 1" и около того. Если же много раз какая-то процедура/функция будет вызываться, то ускорения практически не будет.

Ну вот, например, наивная сортировка (типа ищем максимум в массиве, меняем его с 1-м..н-м элементом). Видно, что в одну строку быстрее в полтора раза.

ЗЫ: через метод выполнять также быстро, если даже не чуть быстрее, чем в одну строку.
Прикрепленные файлы:
19. DENSKR 16 29.11.24 12:04 Сейчас в теме
(18) Ничего не мешало, написал, тема для обсуждения и подтверждения части наблюдений.
9. soft_wind 28.11.24 11:03 Сейчас в теме
Даже если бы однострочный код давал бы какой выигрыш в пару миллисекунд...
то читаемость кода и удобство его доработки того не стоят
(идеальных программ не бывает, постоянно приходится что-то доделывать)
lone_mayson; +1 Ответить
11. Sashares 33 28.11.24 11:47 Сейчас в теме
(9) Ну это имеет смысл для каких то циклов с большим количеством элементов и небольшим количеством строк кода в цикле. Чтобы условно 100к раз выполнил 1 строку, а не 5.

Весь код в одну строку писать это конечно гиблое дело.
12. mkalimulin 1447 28.11.24 11:56 Сейчас в теме
(9) Так пусть ИИ читает. Зачем самому глаза ломать? А для ИИ все равно: с переносами строк или без. Без переносов даже лучше, деньги экономятся
13. user1863362 28.11.24 12:00 Сейчас в теме
(12)
пусть ИИ читает
И комментарии тогда можно не писать, ура!
14. mkalimulin 1447 28.11.24 12:09 Сейчас в теме
(13) Их и раньше можно было не писать
Fox-trot; starik-2005; +2 Ответить
15. DENSKR 16 28.11.24 12:43 Сейчас в теме
(12) И в итоге что получится?
16. soft_wind 28.11.24 14:00 Сейчас в теме
(15) В итоге получается, что просто говно...кодить не надо!
и Код будет понятнее и выполняться гораздо быстрее чем ОДНА (говно)строка!
20. starik-2005 3166 29.11.24 12:06 Сейчас в теме
(9)
если бы однострочный код давал бы какой выигрыш в пару миллисекунд...
Как-то давно "придумал" я алгоритм для загрузки недействительных паспортов, которые до меня бравые 1С-неги грузили в регистр сведений часов этак пять. Ну орлы прям! Так вот алгоритм просто строил битовую матрицу. Сейчас это уже неактуально, поэтому секрета никакого в этом уже нет. Так вот я на С написал прототип - полторы секунды на не сильно мощном сервере. Ребята переписали на 1С. Так вот в одну строку это все работало примерно на 20% быстрее, итоговое время укладывалось в 10 минут, что было быстрее прямой загрузки в SQL в 2,5 раза (25 минут, основное время из которых тратилось на создание индексов, т.к. что-то найти в 120 млн записей без индексов - это очень небыстро, а проверять надо было и более 1кк паспортов каждый божЫй день).

А 20% от 10-ти минут - это 2 минуты. А у народа сервера были нередко из каменного века, так что там это все работало в разы дольше. И 20% уже было другими минутами.
21. Fox-trot 164 29.11.24 12:14 Сейчас в теме
(20) не ну 20 процентов это конечно много
ежели кто не верит, гляньте на рубль
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот