Множество постов я видел, где люди писали про преимущество JavaScript в скорости перед Python. Много раз мне это писали мои знакомые. Ну что же, пришло время это проверить.
P.S. В каждом коде я буду считать время его выполнения именно методами языков.
В JavaScript:
А в Python:
Также я всегда буду брать средние показатели скорость, полученные из 10 запусков программы.
Итак, приступим.
Для начала проверим скорость обычного цикла for, который будет выводить числа от 1 до 1000.
JavaScript:
Выполнение кода заняло 850 ms.
Теперь Python:
Выполнение этого кода заняло 620 ms.
1:0 в пользу Python.
Теперь давайте сделаем то же самое, только вместо for у нас будет while.
JavaScript:
760 ms у нас даёт JS. Быстрее чем for, кстати.
А что у нас по Python?
Если JavaScript стабильно держится на показателе около 750-760 ms, то скорость Python'а колеблется от 600 ms до 750 ms. Но в итоге средняя скорость выходит в 720 ms.
2:0 в пользу Python.
Следующие в очереди — функции.
Создадим функцию, которая будет возводить число 123 в степень 123. Почему не больше? Это я объясню позже. Сейчас же просто создадим такие вот функции.
JavaScript:
JavaScript выполняется за 10 ms.
Python:
Этот код выполняется за 1 ms. В 10 раз быстрее чем JavaScript…
3:0 в пользу Python.
Это всё были детские игры! Давайте играть по-взрослому!
JavaScript:
Код выполняется за 800 ms.
Python:
Python-код выполнялся 1300 ms.
«Вот она, победа JavaScript! Python не может в сложные вычисления!» — сказал бы я, если бы не одно НО. В большинстве случаев, JavaScript даже не считает. Он просто выводит «Infinity» и продолжает, а Python считает всё. И вот я даже не знаю, кому присудить победу. Наверное, здесь у нас будет ничья.
4:1 в пользу Python.
Подведём итог: Python оказался быстрее JavaScript в циклах, функциях, вычислениях. Он считает всё, когда JavaScript делать этого не хочет.
Этим постом я не пытался принизить 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 самый медленный! Нафиг такую скорость!»
Спасибо за уделенное время. Удачи всем!