random.SystemRandom().randint() inefficient

Cecil Westerhof Cecil at decebal.nl
Tue Jul 26 15:26:11 EDT 2022


Chris Angelico <rosuav at gmail.com> writes:

> On Wed, 27 Jul 2022 at 01:06, Cecil Westerhof via Python-list
> <python-list at python.org> wrote:
>>
>> I need to get a random integer. At first I tried it with:
>>     from secrets import randbelow
>>     index = randbelow(len(to_try))
>>
>> This works perfectly, but it took some time. So I thought I try:
>>     from random  import SystemRandom
>>     index = SystemRandom().randint(0, len(to_try) - 1)
>>
>> A first indication is that the second version would take about two
>> times as much time as the first. Is there a reason for this, or should
>> this not be happening?
>>
>
> You're setting up a brand new SystemRandom instance just for a single
> random number. For a fairer comparison, set up the instance, then
> generate far more than just a single number, and see how that goes.

Thanks. I thought I did something wrong and I did.
I will try to implement like you said and look what the result will
be. (And share it.)

(As I understand it both do more, or less the same and should have
comparable performance.)

-- 
Cecil Westerhof
Senior Software Engineer
LinkedIn: http://www.linkedin.com/in/cecilwesterhof


More information about the Python-list mailing list