Вопрос Питон во всем такой медленный? (сравнивал с JavaScript)

Регистрация
12 Дек 2013
Сообщения
79
Репутация
0
Спасибо
0
Монет
0
Встретил задачку: Подбрасываем монетку 6 раз. Найти вероятность, что из этих 6, только два раза упадет орел. Математическое решение не важно, захотелось грубо прогнать "подбрасывания" через цикл и проверить результаты.

JS:

let sum = 0;
for (let i = 0; i < 100000000; i++) {
let eagle = 0;
for (let j = 0; j < 6; j++) { // 6 раз подкинули монетку
let x = Math.round(Math.random());
if (x) { // упал орел
eagle++
}
}
if (eagle == 2) { // Орлов оказалось два - посчитали.
sum++
}
}
console.log( sum / 100000000 );

____________________

Python:

import random

sum = 0
for i in range(0, 100000000):
eagle = 0
for j in range(0, 6):
x = round( random.uniform(0,1) )
if x:
eagle += 1
if eagle == 2:
sum += 1

print( sum / 100000000 )
_________________

JS стабльно справляется за 20 секунд, а Питон отвечал минут 15 !) Или, у питона изначально задача не в том, чтобы быть быстрым?

А какаой вообще язык умеет считать и ходить по таким циклам быстрее всех?
 
JavaScript - один из самых быстрых интерпретируемых языков (Google cделала очень эффективную виртуальную машину), Python - один из самых медленных. Так что всё вполне очевидно. Хочешь быстрый код - отказывайся от динамических языков и переходи на компилируемые непосредственно в процессорный код языки со статической типизацией. P.S. Самым быстрым из популярных языков высокого уровня является C (без плюсов).
 
питон медленный в математических операциях в том числе потому что там используется длинная арифметика из коробки. Если нужна производительность в питоне с математическими операциями обычно используют NumPy
 
Дизайн языка python - прежде всего заточен не на скорость выполнения скриптов, а для на скорость разработки (написания кода) и удобство его поддержки. На самом деле, при написании хорошего кода довольно сложно упереться в производительность + python позволяет легко интегрироваться с различными C-шными библиотека, так что если даже в какой то степени начнешь упираться в скорость, есть большое кол-во решений как это можно преодолеть, посмотри, к примеру, uvloop
 
Назад
Сверху