Skip to content

Instantly share code, notes, and snippets.

@EvilBeaver
Created February 24, 2021 19:43
Show Gist options
  • Save EvilBeaver/11c252f13199afca45c350442bd6dcfb to your computer and use it in GitHub Desktop.
Save EvilBeaver/11c252f13199afca45c350442bd6dcfb to your computer and use it in GitHub Desktop.
Тесты производительности Решето Эратосфена
Н = 50000000;
Массив = Новый Массив();
Массив.Добавить(Ложь);
Массив.Добавить(Ложь);
Для индекс = 2 По Н Цикл
Массив.Добавить(Истина);
КонецЦикла;
времяНачала = ТекущаяУниверсальнаяДатаВМиллисекундах();
Для индекс = 2 По Н Цикл
Если Массив[индекс] Тогда
квадрат = индекс * индекс;
Если квадрат <= Н Тогда
м = квадрат;
Пока м <= Н Цикл
Массив[м] = Ложь;
м = м + индекс;
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецЦикла;
времяОкончания = ТекущаяУниверсальнаяДатаВМиллисекундах();
Сообщить("" + (времяОкончания - времяНачала)/1000);
метод Скрипт()
знч Н = 5000000
пер Массив = новый Массив()
Массив.Добавить(Ложь)
Массив.Добавить(Ложь)
для индекс = 2 по Н
Массив.Добавить(Истина)
;
знч времяНачала = ДатаВремя.Сейчас()
для индекс = 2 по Н
если Массив[индекс]
пер квадрат = индекс*индекс
если квадрат <= Н
пер м = квадрат
пока м <= Н
Массив[м] = Ложь
м += индекс
;
;
;
;
знч времяОкончания = ДатаВремя.Сейчас()
знч мсЦикла = (времяОкончания - времяНачала).ВМиллисекундах()
Консоль.Записать("" + (мсЦикла/1000))
;
@perfolenta
Copy link

кстати, хоть я и стесняюсь, но все же похвастаюсь.... моя Перфолента проиграла и Джаве и Шарпу в расчете Эратосфена, но зато стабильно выигрывает у них в заполнении массива! Типичный результат:
47 мс
640 мс
есть еще над чем работать :)
В общем, всем нам удачи и успехов в развитии своих поделок!!!

@tormozit
Copy link

tormozit commented Aug 22, 2024

Мои замеры.
Сделал свой вариант теста на 10 млн и с ускоренным заполнением массива, чтобы меньше ждать https://paste1c.ru/2ezdv7s3tvqe
Oscript - 8 сек в консольном запуске (значение переменой _РежимОтладки не дает заметного влияния)
1С 8.3.25 - 80 сек в оригинальном варианте (_РежимОтладки = Истина, отладчик подключен)
1С 8.3.25 - 8 сек в однострочном варианте (_РежимОтладки = Ложь) https://infostart.ru/1c/articles/1732527/
В комментариях к статье я уже делал похожий тест, но лишь в пределах платформы 1С https://forum.infostart.ru/forum9/topic287808/#message2881082

1С:Исполнитель без отладки решает тот же тест за 6.5 секунд https://paste1c.ru/40fnsi34oy2o , т.е. на 20% быстрее чем интерпретаторы встроенного языка. Тут строгая типизация ожидаемо дает свои плоды.
А с отладкой он решает уже за 12 секунд, т.е. замедление всего в 2 раза.

@tormozit
Copy link

tormozit commented Aug 22, 2024

Выводы

  1. Надо тщательнее "мыть руки" при замере выполнения кода 1С. Про виды загрязнения я очень подробно и наглядно рассказал в статье про однострочный код.
  2. Интерпретатор 8.3.25 без механизма отладки по сравнению со старыми версиями не замедлился и даже немного ускорился (по сравнению с 8.2 точно).
  3. А вот механизм отладки 8.3.25 потяжелел и его накладные расходы при выполнении строки кода (опкода новой строки) стали немного больше чем были в 8.2
  4. Заметной разницы в скорости работы интерпретаторов 1С и Оскрипт с запрещенной отладкой или в однострочном режиме нет!

@EvilBeaver
Copy link
Author

Заметной разницы в скорости работы интерпретаторов 1С и Оскрипт с запрещенной отладкой или в однострочном режиме нет!

Но пишем код мы обычно не в одну строчку.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment