From: Richard T. <rjt...@th...> - 2005-12-13 14:59:47
Attachments:
perf_test.py
|
I have been doing some initial, very simple performance tests. So far I just have a little script that measures some insert times: adding 100 sources - 0.300260066986s adding 100 people, with sources - 19.1792831421s adding 100 people, without sources - 0.458353042603s Just thought I would post this before I knock off for the day. The interesting thing is that the actual database insert time is trivial in comparison to the amount of time in python adding source refs to the person record. Script attached. I intend to extend this to produce some more extensive performance stats that we can use to guide any optimisation work. Regards Richard -- Jabber: Ric...@ja... PGPKey: http://pgp.mit.edu:11371/pks/lookup?op=get&search=0xA7DA9FD9 Key fingerprint = D051 A121 E7C3 485F 3C0E 1593 ED9E D868 A7DA 9FD9 |
From: Alex R. <sh...@gr...> - 2005-12-13 15:58:52
|
Richard, On Tue, 2005-12-13 at 14:54 +0000, Richard Taylor wrote: > I have been doing some initial, very simple performance tests. So far I j= ust=20 > have a little script that measures some insert times: >=20 > adding 100 sources - 0.300260066986s > adding 100 people, with sources - 19.1792831421s > adding 100 people, without sources - 0.458353042603s Nice tool. But I think the trick is that, "adding 100 people with sources" was really "adding 100 people with 100 source references per person". The most time apparently was spent looping over the 100 sourcerefs for each of 100 people. In other words, just the interpreter time was spent over 100 steps without source, and over 10000 steps with sources. Loops are expensive in Python. If we just have a single source ref per person then the time is almost the same: adding 100 sources 0.136008024216 adding 100 people, with sources 0.274875879288 adding 100 people, without sources 0.220510959625 Here's the difference between your script and mine: $ diff -u ~/perf_test.py perf_test.py --- perf_test.py 2005-12-13 07:52:28.000000000 -0800 +++ /home/shura/perf_test.py 2005-12-13 07:35:38.000000000 -0800 @@ -46,7 +46,7 @@ for i in xrange(0,count): person =3D RelLib.Person() + for src in src_refs: - for src in [src_refs[i]]: person.add_source_reference(RelLib.SourceRef(src)) db.add_person(person,tran) db.commit_person(person,tran) Alex --=20 Alexander Roitman http://www.gramps-project.org |