Здравствуйте! У меня есть следующие вопросы:
Имеем код:
let result;
let i;
for (i = 0; i < 125000000; i ) {
result = i * 3 / 2;
}
Таких циклов у меня 500. Написал всё это чисто что б проверить скорость выполнения данного кода на разных языках программирования, и вот какие результаты:
PHP, C# -- полный провал
C -- 163s
C -- 150s
Node.js -- 56s (!!!!!)
Внимание, вопросы:
1. Почему C# и PHP вообще загибаются с этой задачей?
2. Как нода может быть быстрее C и C ?
Производительность языков определяется не синтетическими тестами, а реальными задачами. На синтетическом тесте без четких требований к компилятору и среде выполнения вы можете получить абсолютно произвольные результаты. Вы их и получили. Это абсолютно нормально.
Скомпилируйте C в релизом режиме со всеми оптимизациям. Ну и godbolt зайдите и посмотрите, во что ваш код превратится под разными компиляторами. Там циклов скорее всего даже не будет.
А вообще интерпретатор может удалять циклы, если они не делают ничего. В твоём случае первые 499 перезатирают result раз за разом. Циклы оптимизатор может сворачивать в арифметическую/геометрическую прогрессии, если это возможно. Также, все 500 циклов вообще могут быть удалены, т.к. переменная result после циклов не используется.