Как стать автором
Обновить

Быстрее ли JavaScript, чем Python?

JavaScript *Python *Программирование *
Ожидает приглашения
Множество постов я видел, где люди писали про преимущество JavaScript в скорости перед Python. Много раз мне это писали мои знакомые. Ну что же, пришло время это проверить.

P.S. В каждом коде я буду считать время его выполнения именно методами языков.

В JavaScript:

Date.now()

А в Python:

from time import time
time()

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

Итак, приступим.

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

JavaScript:

start = Date.now()
for (var i = 1; i < 1001; i++) {
    console.log(i);
}
end = Date.now() - start
console.log(end + " ms")

Выполнение кода заняло 850 ms.

Теперь Python:

from time import time
start = time()
for i in range(1, 1001):
    print(i)
end = round(time() - start, 3)
print(str(end) + " ms")

Выполнение этого кода заняло 620 ms.

1:0 в пользу Python.

Теперь давайте сделаем то же самое, только вместо for у нас будет while.

JavaScript:

start = Date.now()
var i = 1;
while (i < 1001) {
    console.log(i);
    i++;
}
end = Date.now() - start
console.log(end + " ms")

760 ms у нас даёт JS. Быстрее чем for, кстати.

А что у нас по Python?

from time import time
start = time()
i = 1
while i < 1001:
    print(i)
    i += 1
end = round(time() - start, 3)
print(str(end) + " ms")

Если JavaScript стабильно держится на показателе около 750-760 ms, то скорость Python'а колеблется от 600 ms до 750 ms. Но в итоге средняя скорость выходит в 720 ms.

2:0 в пользу Python.

Следующие в очереди — функции.

Создадим функцию, которая будет возводить число 123 в степень 123. Почему не больше? Это я объясню позже. Сейчас же просто создадим такие вот функции.

JavaScript:

start = Date.now()
function func(a,b) {
    console.log(a ** b);
}
func(123, 123);
end = Date.now() - start
console.log(end + " ms")

JavaScript выполняется за 10 ms.

Python:

from time import time
start = time()
def func(a, b):
    print(a ** b)
func(123, 123)
end = round(time() - start, 3)
print(str(end) + " ms")

Этот код выполняется за 1 ms. В 10 раз быстрее чем JavaScript…

3:0 в пользу Python.

Это всё были детские игры! Давайте играть по-взрослому!

JavaScript:

start = Date.now()
for (var i = 1; i < 1001; i++) {
    if (i % 5 == 0) {
        console.log(i ** 10)
    } else {
        console.log(i ** 123)
    }
}
end = Date.now() - start
console.log(end + " ms")

Код выполняется за 800 ms.

Python:

from time import time
start = time()
for i in range(1, 1001):
    if i % 5 == 0:
        print(i ** 10)
    else:
        print(i ** 123)
end = round(time() - start, 3)
print(str(end) + " ms")

Python-код выполнялся 1300 ms.

«Вот она, победа JavaScript! Python не может в сложные вычисления!» — сказал бы я, если бы не одно НО. В большинстве случаев, JavaScript даже не считает. Он просто выводит «Infinity» и продолжает, а Python считает всё. И вот я даже не знаю, кому присудить победу. Наверное, здесь у нас будет ничья.

4:1 в пользу Python.

Подведём итог: Python оказался быстрее JavaScript в циклах, функциях, вычислениях. Он считает всё, когда JavaScript делать этого не хочет.

Этим постом я не пытался принизить JavaScript, сам его люблю всем сердцем. Просто надоели те, кто везде пишут: «Python самый медленный! Нафиг такую скорость!»

Спасибо за уделенное время. Удачи всем!
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.