ORM Benchmark
A benchmark to compare the performance of golang orm package.
Results (2014-8-22)
Environment
- MBP Intel Core i5 2.40GHz (2 cores)
- 8G RAM
- Mac OS X 10.9.4
- go version go1.3.1 darwin/amd64
- Go-MySQL-Driver Latest
MySQL
- MySQL 5.6.13 Server for Mac OS X on x86_64
ORMs
All package run in no-cache mode.
Run
go get github.com/nashtsai/orm-benchmark
cd $GOPATH/src/github.com/nashtsai/orm-benchmark
go build
./orm-benchmark -multi=5 -orm=all
Reports
Sample 1
10000 times - Insert
raw: 6.20s 619586 ns/op 329 B/op 10 allocs/op
qbs: 7.14s 714323 ns/op 5181 B/op 85 allocs/op
xorm: 7.78s 778007 ns/op 2356 B/op 63 allocs/op
orm: 8.69s 869307 ns/op 1573 B/op 38 allocs/op
hood: 9.65s 964711 ns/op 13497 B/op 193 allocs/op
2500 times - MultiInsert 100 row
raw: 9.80s 3920504 ns/op 50725 B/op 413 allocs/op
xorm: 11.28s 4513046 ns/op 116264 B/op 1864 allocs/op
orm: 13.36s 5343020 ns/op 88042 B/op 1245 allocs/op
hood: Not support multi insert
qbs: Not support multi insert
10000 times - Update
qbs: 6.59s 659403 ns/op 5181 B/op 85 allocs/op
raw: 7.14s 714484 ns/op 343 B/op 10 allocs/op
xorm: 8.29s 829202 ns/op 2759 B/op 83 allocs/op
hood: 9.29s 928678 ns/op 13477 B/op 193 allocs/op
orm: 9.71s 970709 ns/op 1504 B/op 37 allocs/op
20000 times - Read
raw: 3.69s 184264 ns/op 921 B/op 23 allocs/op
qbs: 4.35s 217527 ns/op 7568 B/op 136 allocs/op
xorm: 5.82s 290913 ns/op 7186 B/op 177 allocs/op
hood: 7.31s 365405 ns/op 4831 B/op 68 allocs/op
orm: 7.56s 377792 ns/op 2772 B/op 75 allocs/op
10000 times - MultiRead limit 100
xorm: 5.29s 528933 ns/op 35646 B/op 765 allocs/op
raw: 6.87s 687438 ns/op 32618 B/op 815 allocs/op
orm: 17.07s 1706562 ns/op 96891 B/op 3286 allocs/op
qbs: 19.64s 1963853 ns/op 221316 B/op 5216 allocs/op
hood: 22.66s 2265802 ns/op 239176 B/op 5552 allocs/op
Sample 2
10000 times - Insert
raw: 6.39s 638549 ns/op 330 B/op 10 allocs/op
xorm: 6.86s 686125 ns/op 2364 B/op 63 allocs/op
qbs: 6.90s 689705 ns/op 5203 B/op 85 allocs/op
orm: 8.79s 879231 ns/op 1574 B/op 38 allocs/op
hood: 9.31s 930851 ns/op 13426 B/op 193 allocs/op
2500 times - MultiInsert 100 row
xorm: 7.50s 2999451 ns/op 116465 B/op 1864 allocs/op
raw: 8.59s 3435754 ns/op 50833 B/op 413 allocs/op
orm: 10.82s 4326730 ns/op 88097 B/op 1245 allocs/op
qbs: Not support multi insert
hood: Not support multi insert
10000 times - Update
qbs: 6.98s 697781 ns/op 5199 B/op 85 allocs/op
xorm: 7.28s 727931 ns/op 2763 B/op 83 allocs/op
raw: 8.11s 811301 ns/op 344 B/op 10 allocs/op
orm: 9.45s 945375 ns/op 1505 B/op 37 allocs/op
hood: 9.81s 981114 ns/op 13425 B/op 193 allocs/op
20000 times - Read
raw: 3.65s 182250 ns/op 923 B/op 23 allocs/op
qbs: 4.61s 230311 ns/op 7600 B/op 136 allocs/op
xorm: 5.61s 280429 ns/op 7262 B/op 177 allocs/op
hood: 7.47s 373731 ns/op 4766 B/op 68 allocs/op
orm: 8.10s 404900 ns/op 2784 B/op 75 allocs/op
10000 times - MultiRead limit 100
xorm: 5.74s 574265 ns/op 35584 B/op 765 allocs/op
raw: 6.77s 677382 ns/op 32672 B/op 815 allocs/op
orm: 17.02s 1701782 ns/op 97191 B/op 3286 allocs/op
qbs: 19.39s 1938879 ns/op 222771 B/op 5218 allocs/op
hood: 23.14s 2314262 ns/op 238526 B/op 5550 allocs/op
Run2
./orm-benchmark -multi=20 -orm=all
Reports
Sample 1
40000 times - Insert
raw: 26.96s 674098 ns/op 329 B/op 10 allocs/op
xorm: 28.77s 719131 ns/op 2350 B/op 63 allocs/op
hood: 36.93s 923166 ns/op 13476 B/op 193 allocs/op
qbs: 38.12s 952943 ns/op 5174 B/op 85 allocs/op
orm: 49.44s 1235952 ns/op 1575 B/op 38 allocs/op
10000 times - MultiInsert 100 row
xorm: 39.27s 3926747 ns/op 116041 B/op 1863 allocs/op
raw: 39.80s 3979874 ns/op 50649 B/op 412 allocs/op
orm: 46.10s 4609617 ns/op 88066 B/op 1245 allocs/op
hood: Not support multi insert
qbs: Not support multi insert
40000 times - Update
xorm: 32.31s 807782 ns/op 2754 B/op 83 allocs/op
raw: 33.28s 831928 ns/op 343 B/op 10 allocs/op
qbs: 33.74s 843511 ns/op 5174 B/op 85 allocs/op
orm: 39.70s 992435 ns/op 1505 B/op 37 allocs/op
hood: 43.85s 1096128 ns/op 13466 B/op 193 allocs/op
80000 times - Read
raw: 14.84s 185552 ns/op 921 B/op 23 allocs/op
qbs: 17.48s 218485 ns/op 7554 B/op 136 allocs/op
xorm: 22.73s 284130 ns/op 7078 B/op 177 allocs/op
hood: 29.56s 369516 ns/op 4798 B/op 68 allocs/op
orm: 30.70s 383693 ns/op 2766 B/op 75 allocs/op
40000 times - MultiRead limit 100
xorm: 21.19s 529680 ns/op 35406 B/op 765 allocs/op
raw: 25.08s 626952 ns/op 32579 B/op 815 allocs/op
orm: 63.42s 1585418 ns/op 96642 B/op 3286 allocs/op
qbs: 73.63s 1840659 ns/op 221677 B/op 5215 allocs/op
hood: 88.25s 2206154 ns/op 239058 B/op 5552 allocs/op