Login  Register

Re: Contributing to VoyageMongo (improving insertion/updating speed)

Posted by Sven Van Caekenberghe-2 on Jul 23, 2015; 11:41am
URL: https://forum.world.st/Contributing-to-VoyageMongo-improving-insertion-updating-speed-tp4838806p4838824.html

Good catch, that seems wrong to me, and as you showed it is way too slow. UUIDGenerator should certainly not be reinitialised each time a UUID is needed. There have been other discussions about UUID in the past.

/dev/urandom is not available on all platforms anyway, so alternatives might be useful.

Like Stef said, the MongoDB part is out of our scope.

Please make an issue (about the #makeSeed itself).

> On 23 Jul 2015, at 13:31, stepharo <[hidden email]> wrote:
>
> Hi holger
>
> Esteban is on vacation and I do not who is another manager of the mongo repo.
>
> Stef
>
> Le 23/7/15 12:23, Holger Freyther a écrit :
>> Hi,
>>
>> I wanted to benchmark some look-ups with VoyageMongo and tried to insert
>> some dummy objects and it was quite slow (pharo takes 99% CPU and mongo
>> is idle). Using the nice profiler i noticed that VOMongoRepository>>#newVersion
>> calls UUIDGenerator new makeSeed which will take quite long.
>>
>>
>>   [UUIDGenerator new makeSeed] bench '96.9 per second.’
>>
>> I am running this on OSX so it will end up in >>#makeUnixSeed which will open
>> /dev/urandom. I needed cryptographic random numbers in another project and
>> used NativeBoost to call into libcrypto of OpenSSL and use the RAND_bytes
>> function to get them.
>>
>>
>>  [ (RAND rand: 4) asInteger ] bench '588,000 per second.’
>>
>>
>> The quality of the random numbers should be comparable and now I wonder how
>> I can help integrating such a change.
>>
>> From my point of view I can either patch Voyage-Mongo-Core to be able to
>> use other random number sources. Or I could add another “seed” source to
>> the UUIDGenerator. What would be the preferred approach and how to move
>> forward? Is NativeBoost something one could rely on in upcoming Pharo versions?
>>
>> For a simple insertion of a class with a couple (~5) fields the insertion time for
>> 1000 items goes from ~10s to ~250ms.
>>
>> How can I move this forward?
>>
>> holger
>>
>
>