fpdb/docs/benchmarks.txt
2009-10-25 00:13:35 +02:00

76 lines
3.1 KiB
Plaintext

benchmarks
==========
All measurements on my Athlon64@1.1GHz, 1 GB RAM, RAID5, Hardened Gentoo Linux 2.6.23
From svn47 all measurements on my Athlon64 X2@1GHz, 2GB RAM
All measurements were ran several times in a row, unless otherwise noted the computer was mostly idle
svn12/15 were with PostgreSQL, svn23 onwards with MySQL
All import measurements were taken immediately after reseting the tables
svn12, whilst compiling open office in the background
=====
reseting tables (incl filling default data): 0.5-0.6s
importing one hand from a file: 0.5-0.7s
svn15
=====
reseting tables (incl filling default data): 0.35-0.4s
importing one FTP hand from a file: 0.2-0.3s or 12-18k/hr
importing 51 FTP hands: 2.8-2.9s or 63-66k/hr
The large speedup will be partially due to not compiling in the background, and
partially due to less connecting/disconnecting the DB I'd imagine.
I'm VERY happy with this performance, but large gains could probably be made by
making the importer just a bit more sensible.
svn23
=====
reseting tables (incl filling default data): 0.3-0.35s
importing 75 PS hands: 3.2s or 84k/hr
importing 180 FTP hands: 7.7-7.9s 82k/hr
This is the rewrite in import_FTP_and_PS.py, svn12/15 are with import_file.py
Nice, it's substantially faster inspite of supporting PS and FTP (ish) rather
than just FTP and handling more special cases.
svn24
=====
importing 75 PS hands: 3.2-3.3s or 82k/hr
importing 507 FTP hands: 23.5-23.8s or 77k/hr
importing 947 FTP hands: 76.2-72.7s or 44k/hr
As you can see FTP has gotten about 6% slower on 500 hands - but the much expanded handling
of new cases (particularly the ante folding will be ALOT of extra string
comparisons) easily explains that. In fact I expected a much bigger impact.
(I suspect this is due to the parsing pausing whilst my shell catches up)
svn47
=====
It significantly slows down as the database gets larger, after a few thousand
hands it got to just one hand per second and slower. However, around 90% of the
CPU load was MySQL. Any tips are most welcome..
svn52 (whilst watching movie in a small window)
=====
Importing 2500 hands (mixed sites+types): 6m15s or 31k/hr (ran twice)
Of these 230 were skipped as duplicate or partial so counting 2270 hands
svn53 (whilst watching movie in a small window)
=====
Importing the 2270 hands from svn52: 1m50 or 74k/hr (82 if counting dupes/partial)
Importing my 35661 (plus 427 dupe/part) hands: 51m51s or 41k/hr (ran once)
The dbsize still has a significant impact, but with these sizes certainly it's
just not a problem. If anyone runs a larger database let me know how long it takes.
Thanks bwarycha for the tip with the foreign keys!
License
=======
Trademarks of third parties have been used under Fair Use or similar laws.
Copyright 2008 Steffen Jobbagy-Felso
Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License,
Version 1.2 as published by the Free Software Foundation; with
no Invariant Sections, no Front-Cover Texts, and with no Back-Cover
Texts. A copy of the license can be found in fdl-1.2.txt
The program itself is licensed under AGPLv3, see agpl-3.0.txt