Почему тормозят 500 циклов, в чем причина и как это оптимизировать? Так случилось что понадобился большой скрипт, чтобы замедлить работу браузера, потом я пошел дальше и
проверил как с этой задачей справятся другие языки. Итак, я использовал такой код:
500 циклов, каждый 125 000 000 итераций, в теле инструкция: result = n * 3 / 2.let result;
let i;
for (i = 0; i < 125000000; i++) {
result = i * 3 / 2;
}
for (i = 0; i < 125000000; i++) {
result = i * 3 / 2;
}
for (i = 0; i < 125000000; i++) {
result = i * 3 / 2;
}
// еще 497 аналогичных цикла...
Тут приведен JS код, в других языках конструкция аналогична. Результат меня весьма удивил...
PHP - провал *.
C# - провал *.
С - 163 секунды.
С++ - 150 секунд.
JS (Node) - 56 секунд.
Запускал под ОС Windows 10.* операция длилась более 15 минут, надоело ждать завершения - убил процесс.
Опытные товарищи, подскажите, каким образом нода могла оказаться быстрее C и С++ и
почему C# с PHP вообще "забуксовали"?
Это может быть связанно с не оптимизированным доступом к памяти в случае нативного кода?

21 Авг 2019 в 06:20
203 +1
0
Ответы
1

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

Node.js, являющийся реализаций JavaScript, может быть быстрее в данном случае из-за особенностей работы событийного цикла и асинхронных операций. Благодаря этому, Node.js может эффективнее обрабатывать такие операции, чем например, PHP.

Шустрота Node.js также может быть связана с тем, что в случае JavaScript JIT-компилятор, который оптимизирует код во время выполнения, что увеличивает его производительность.

Относительно C и C++, возможно, что в ваших примерах происходят неоптимальные обращения к памяти или что-то другое, что замедляет выполнение кода.

Что касается C#, то здесь могут влиять различные факторы, такие как работа сборщика мусора и другие подводные камни языка.

Если вы хотите оптимизировать выполнение подобных циклов, можно рассмотреть возможность использования параллельных вычислений, векторных инструкций, при необходимости применять оптимизации на уровне компилятора и т.д.

20 Апр в 13:20
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 436 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир