LINUX.ORG.RU

random в python и go

 ,


0

2

Доброго всем дня. Объясните, пожалуйста, почему рандом в питоне раз в 20 медленее гошного 'crypto/rand'?

Конкретно в питоне return open("/dev/random", "rb").read(numbytes), а в go стандартный rand.Reader. Закопался в исходники го, там непонятно вообще ничего, сплошной синтаксический сахар. Заранее спасибо.

★★

Python 2 не имеет большого смысла использовать. Но вообще Python язык медленный, так как интерпретируемый, а Go компилируемый и быстрый. Поэтому и можно ожидать, что что-то в Python работает медленнее, чем в Go. Однако для математических вычислений в Python можно использовать библиотеки, написанные на C/C++ или даже с использованием GPU, тогда вычисления значительно ускорятся.

Partisan ★★ ()

Это не питоновый рандом, это системный рандом пригодный для криптогрофических целей. Он никогда не будет быстрым и ему нужно много энтропии, ты исчерпаешь пул и приехали. В го почти наверняка /dev/urandom или что-то ещё более убогое, это никуда не годится.

anonymous ()
Ответ на: комментарий от dnb

Never use /dev/random. On OpenBSD, it does the same as /dev/urandom, but on many other systems, it misbehaves. For example, it may block, directly return entropy instead of using a stream cipher, or only return data from hardware random generators.

Ref: https://man.openbsd.org/random.4

Т.ч. не слушай анонимных кукаретиков, они туфту гонят.

/dev/urandom is a correct way to go

beastie ★★★★★ ()
Последнее исправление: beastie (всего исправлений: 1)
Ответ на: комментарий от beastie

доверяю

Знаешь, после заявлений из опенка по поводу багов openssh и их отношения к проблемам, всем на них положить. У них картонная безопасность. Это всё ещё не имеет никакого отношения с проблеме в топике, линуксовый urandom не отвечает даже к минимальным требованиям (как в xbsd, согласно заявлениям некоторых разработчиков).

А твоё отношение, как это принято говорить, biased. Нарциссичные клоуны и ничего более.

anonymous ()

Для Python'a дофига рандом-библиотек разного уровня скорости и криптоскойкости, просто по дефолту предполагается, что ты пишешь на нем, что-то более близкое к скрипту, чем к программе, критичной к скорости выполнения.

anonymous ()