Hello !  

After fight a bit with sqlite3 "wal" mode I wrote a small multi thread
program to test it's performance
https://gist.github.com/mingodad/79225c88f8dce0f174f5 , doing so and testing
on linux and os x I dicovered that os x threads are around 50% slower than
linux.  

Sqlite3 seems to have a race condition when create a new database on linux
(on os x this doesn't happen),  

we can observe it when start the program with 100 threads and no initial
database:  

Update rate: total=4697, last_total=4662, *****rate=35 , avg=0
Update busy rate: total=68353, last_total=67363, rate=990, avg=9
Update failed rate: total=19, last_total=19, rate=0, avg=0
Read busy rate: total=0, last_total=0, rate=0, avg=0
Read failed rate: total=0, last_total=0, rate=0, avg=0  

And now starting the program with the same 100 threads but with an already
existing database:  

Update rate: total=18863, last_total=14836, *****rate=4027, avg=40
Update busy rate: total=3631, last_total=2871, rate=760, avg=7
Update failed rate: total=0, last_total=0, rate=0, avg=0
Read busy rate: total=0, last_total=0, rate=0, avg=0
Read failed rate: total=0, last_total=0, rate=0, avg=0  

Any comment/suggestion are welcome !  

Cheers !  

Linux celeron 2 cores  

OS X i5 4 cores  

10 threads:  

linux:  

Update rate: total=39727, last_total=38274, rate=1453, avg=145
Update busy rate: total=1878, last_total=1814, rate=64, avg=6
Update failed rate: total=0, last_total=0, rate=0, avg=0
Read busy rate: total=0, last_total=0, rate=0, avg=0
Read failed rate: total=0, last_total=0, rate=0, avg=0  

os x:  

Update rate: total=8894, last_total=8345, rate=549, avg=54
Update busy rate: total=1329, last_total=1252, rate=77, avg=7
Update failed rate: total=0, last_total=0, rate=0, avg=0
Read busy rate: total=0, last_total=0, rate=0, avg=0
Read failed rate: total=0, last_total=0, rate=0, avg=0  

80 threads:  

linux:  

Update rate: total=64317, last_total=61069, rate=3248, avg=64
Update busy rate: total=8263, last_total=7889, rate=374, avg=7
Update failed rate: total=0, last_total=0, rate=0, avg=0
Read busy rate: total=0, last_total=0, rate=0, avg=0
Read failed rate: total=0, last_total=0, rate=0, avg=0  

os x:  

Update rate: total=7133, last_total=6535, rate=598, avg=11
Update busy rate: total=5291, last_total=4821, rate=470, avg=9
Update failed rate: total=0, last_total=0, rate=0, avg=0
Read busy rate: total=0, last_total=0, rate=0, avg=0
Read failed rate: total=0, last_total=0, rate=0, avg=0  

500 threads:  

linux:  

Update rate: total=56811, last_total=53535, rate=3276, avg=6
Update busy rate: total=62126, last_total=58903, rate=3223, avg=6
Update failed rate: total=0, last_total=0, rate=0, avg=0
Read busy rate: total=0, last_total=0, rate=0, avg=0
Read failed rate: total=0, last_total=0, rate=0, avg=0  

os x:  

Update rate: total=22160, last_total=21454, rate=706, avg=1
Update busy rate: total=84386, last_total=81616, rate=2770, avg=5
Update failed rate: total=0, last_total=0, rate=0, avg=0
Read busy rate: total=0, last_total=0, rate=0, avg=0
Read failed rate: total=0, last_total=0, rate=0, avg=0  

1000 threads:  

linux:  

Update rate: total=13358, last_total=13071, rate=287, avg=0
Update busy rate: total=386704, last_total=380480, rate=6224, avg=6
Update failed rate: total=30, last_total=29, rate=1, avg=0
Read busy rate: total=0, last_total=0, rate=0, avg=0
Read failed rate: total=0, last_total=0, rate=0, avg=0  

os x:  

Update rate: total=17519, last_total=17076, rate=443, avg=0
Update busy rate: total=127103, last_total=124224, rate=2879, avg=2
Update failed rate: total=0, last_total=0, rate=0, avg=0
Read busy rate: total=0, last_total=0, rate=0, avg=0
Read failed rate: total=0, last_total=0, rate=0, avg=0



?

Reply via email to