Skip to content

make xorm to re-use db connection #1

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 11 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
194 changes: 105 additions & 89 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,142 +2,158 @@

A benchmark to compare the performance of golang orm package.

## Results (2014-1-7)
## Results (2014-8-22)

### Environment

* Aliyun Intel Xeon E5-2630 2.30GHz (4 core)
* MBP Intel Core i5 2.40GHz (2 cores)
* 8G RAM
* CentOS 6.5
* go version go1.2 linux/amd64
* Mac OS X 10.9.4
* go version go1.3.1 darwin/amd64
* [Go-MySQL-Driver Latest](https://github.com/go-sql-driver/mysql)

### MySQL

* MySQL 5.5.34 for Linux on x86_64
* MySQL-server-5.5.34-1.rhel5.x86_64.rpm
* Config in my.cnf
* MySQL 5.6.13 Server for Mac OS X on x86_64

### ORMs

All package run in no-cache mode.

* [Beego ORM](http://beego.me/docs/mvc/model/overview.md) latest in branch [develop](https://github.com/astaxie/beego/tree/develop)
* [xorm](https://github.com/lunny/xorm) latest
* [Beego ORM](http://beego.me/docs/mvc/model/overview.md) latest
* [xorm](https://github.com/go-xorm/xorm) latest
* [Hood](https://github.com/eaigner/hood) latest
* [Qbs](https://github.com/coocood/qbs) latest (Disabled stmt cache / [patch](https://gist.github.com/slene/8297019) / [full](https://gist.github.com/slene/8297565))

### Run

```go
go get github.com/beego/orm-benchmark
orm-benchmark -multi=20 -orm=all
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

```
40000 times - Insert
orm: 11.63s 290706 ns/op 1515 B/op 35 allocs/op
qbs: 12.92s 322982 ns/op 5846 B/op 111 allocs/op
xorm: 13.21s 330361 ns/op 2176 B/op 53 allocs/op
hood: 14.26s 356591 ns/op 14592 B/op 293 allocs/op

10000 times - MultiInsert 100 row
orm: 22.17s 2217284 ns/op 85061 B/op 854 allocs/op
xorm: 30.17s 3016717 ns/op 112572 B/op 1877 allocs/op
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

40000 times - Update
orm: 12.77s 319335 ns/op 1463 B/op 34 allocs/op
qbs: 12.91s 322643 ns/op 5843 B/op 111 allocs/op
xorm: 12.93s 323136 ns/op 2500 B/op 73 allocs/op
hood: 14.53s 363331 ns/op 14578 B/op 293 allocs/op

80000 times - Read
orm: 19.57s 244639 ns/op 2762 B/op 81 allocs/op
hood: 19.76s 246961 ns/op 4981 B/op 96 allocs/op
qbs: 20.44s 255498 ns/op 8609 B/op 180 allocs/op
xorm: 27.35s 341934 ns/op 6807 B/op 193 allocs/op

40000 times - MultiRead limit 100
orm: 39.32s 982898 ns/op 90386 B/op 3201 allocs/op
qbs: 62.58s 1564475 ns/op 221787 B/op 6151 allocs/op
xorm: 83.19s 2079663 ns/op 189770 B/op 6816 allocs/op
hood: 87.64s 2191093 ns/op 254457 B/op 9228 allocs/op
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

```
40000 times - Insert
orm: 11.43s 285684 ns/op 1511 B/op 35 allocs/op
xorm: 12.32s 308044 ns/op 2182 B/op 53 allocs/op
qbs: 12.94s 323575 ns/op 5849 B/op 111 allocs/op
hood: 14.45s 361222 ns/op 14563 B/op 293 allocs/op

10000 times - MultiInsert 100 row
orm: 22.37s 2236512 ns/op 84921 B/op 853 allocs/op
xorm: 25.49s 2549191 ns/op 112714 B/op 1878 allocs/op
hood: Not support multi insert
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

40000 times - Update
orm: 12.95s 323640 ns/op 1460 B/op 34 allocs/op
qbs: 13.02s 325452 ns/op 5850 B/op 111 allocs/op
xorm: 13.13s 328245 ns/op 2503 B/op 73 allocs/op
hood: 14.70s 367445 ns/op 14559 B/op 293 allocs/op
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
```

80000 times - Read
orm: 19.36s 241961 ns/op 2744 B/op 81 allocs/op
hood: 19.76s 246971 ns/op 4958 B/op 96 allocs/op
qbs: 20.47s 255905 ns/op 8628 B/op 180 allocs/op
xorm: 26.38s 329728 ns/op 6820 B/op 193 allocs/op
### Run2

40000 times - MultiRead limit 100
orm: 39.48s 987091 ns/op 90160 B/op 3200 allocs/op
qbs: 63.17s 1579254 ns/op 221992 B/op 6152 allocs/op
xorm: 83.58s 2089464 ns/op 189706 B/op 6815 allocs/op
hood: 91.41s 2285256 ns/op 254087 B/op 9226 allocs/op
```go
./orm-benchmark -multi=20 -orm=all
```

#### Sample 3
### Reports

#### Sample 1
```
40000 times - Insert
orm: 11.95s 298654 ns/op 1512 B/op 35 allocs/op
xorm: 12.47s 311666 ns/op 2179 B/op 53 allocs/op
qbs: 13.49s 337224 ns/op 5849 B/op 111 allocs/op
hood: 15.00s 374967 ns/op 14573 B/op 293 allocs/op
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
orm: 22.95s 2294502 ns/op 84920 B/op 853 allocs/op
xorm: 26.01s 2600964 ns/op 112579 B/op 1877 allocs/op
qbs: Not support multi insert
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
orm: 13.17s 329226 ns/op 1461 B/op 34 allocs/op
qbs: 13.27s 331845 ns/op 5847 B/op 111 allocs/op
xorm: 13.64s 340992 ns/op 2502 B/op 73 allocs/op
hood: 14.79s 369635 ns/op 14576 B/op 293 allocs/op
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
orm: 20.10s 251271 ns/op 2738 B/op 81 allocs/op
hood: 20.45s 255610 ns/op 4960 B/op 96 allocs/op
qbs: 21.13s 264091 ns/op 8651 B/op 180 allocs/op
xorm: 27.60s 345010 ns/op 6801 B/op 193 allocs/op
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
orm: 40.36s 1008896 ns/op 90137 B/op 3200 allocs/op
qbs: 64.53s 1613287 ns/op 222005 B/op 6152 allocs/op
xorm: 81.46s 2036502 ns/op 189573 B/op 6815 allocs/op
hood: 90.95s 2273773 ns/op 253770 B/op 9225 allocs/op
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
```


### Contact

Maintain by [slene](https://github.com/slene)
143 changes: 143 additions & 0 deletions README_old.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,143 @@
# ORM Benchmark

A benchmark to compare the performance of golang orm package.

## Results (2014-1-7)

### Environment

* Aliyun Intel Xeon E5-2630 2.30GHz (4 core)
* 8G RAM
* CentOS 6.5
* go version go1.2 linux/amd64
* [Go-MySQL-Driver Latest](https://github.com/go-sql-driver/mysql)

### MySQL

* MySQL 5.5.34 for Linux on x86_64
* MySQL-server-5.5.34-1.rhel5.x86_64.rpm
* Config in my.cnf

### ORMs

All package run in no-cache mode.

* [Beego ORM](http://beego.me/docs/mvc/model/overview.md) latest in branch [develop](https://github.com/astaxie/beego/tree/develop)
* [xorm](https://github.com/go-xorm/xorm) latest
* [Hood](https://github.com/eaigner/hood) latest
* [Qbs](https://github.com/coocood/qbs) latest (Disabled stmt cache / [patch](https://gist.github.com/slene/8297019) / [full](https://gist.github.com/slene/8297565))

### Run

```go
go get github.com/beego/orm-benchmark
orm-benchmark -multi=20 -orm=all
```

### Reports

#### Sample 1

```
40000 times - Insert
orm: 11.63s 290706 ns/op 1515 B/op 35 allocs/op
qbs: 12.92s 322982 ns/op 5846 B/op 111 allocs/op
xorm: 13.21s 330361 ns/op 2176 B/op 53 allocs/op
hood: 14.26s 356591 ns/op 14592 B/op 293 allocs/op

10000 times - MultiInsert 100 row
orm: 22.17s 2217284 ns/op 85061 B/op 854 allocs/op
xorm: 30.17s 3016717 ns/op 112572 B/op 1877 allocs/op
hood: Not support multi insert
qbs: Not support multi insert

40000 times - Update
orm: 12.77s 319335 ns/op 1463 B/op 34 allocs/op
qbs: 12.91s 322643 ns/op 5843 B/op 111 allocs/op
xorm: 12.93s 323136 ns/op 2500 B/op 73 allocs/op
hood: 14.53s 363331 ns/op 14578 B/op 293 allocs/op

80000 times - Read
orm: 19.57s 244639 ns/op 2762 B/op 81 allocs/op
hood: 19.76s 246961 ns/op 4981 B/op 96 allocs/op
qbs: 20.44s 255498 ns/op 8609 B/op 180 allocs/op
xorm: 27.35s 341934 ns/op 6807 B/op 193 allocs/op

40000 times - MultiRead limit 100
orm: 39.32s 982898 ns/op 90386 B/op 3201 allocs/op
qbs: 62.58s 1564475 ns/op 221787 B/op 6151 allocs/op
xorm: 83.19s 2079663 ns/op 189770 B/op 6816 allocs/op
hood: 87.64s 2191093 ns/op 254457 B/op 9228 allocs/op
```

#### Sample 2

```
40000 times - Insert
orm: 11.43s 285684 ns/op 1511 B/op 35 allocs/op
xorm: 12.32s 308044 ns/op 2182 B/op 53 allocs/op
qbs: 12.94s 323575 ns/op 5849 B/op 111 allocs/op
hood: 14.45s 361222 ns/op 14563 B/op 293 allocs/op

10000 times - MultiInsert 100 row
orm: 22.37s 2236512 ns/op 84921 B/op 853 allocs/op
xorm: 25.49s 2549191 ns/op 112714 B/op 1878 allocs/op
hood: Not support multi insert
qbs: Not support multi insert

40000 times - Update
orm: 12.95s 323640 ns/op 1460 B/op 34 allocs/op
qbs: 13.02s 325452 ns/op 5850 B/op 111 allocs/op
xorm: 13.13s 328245 ns/op 2503 B/op 73 allocs/op
hood: 14.70s 367445 ns/op 14559 B/op 293 allocs/op

80000 times - Read
orm: 19.36s 241961 ns/op 2744 B/op 81 allocs/op
hood: 19.76s 246971 ns/op 4958 B/op 96 allocs/op
qbs: 20.47s 255905 ns/op 8628 B/op 180 allocs/op
xorm: 26.38s 329728 ns/op 6820 B/op 193 allocs/op

40000 times - MultiRead limit 100
orm: 39.48s 987091 ns/op 90160 B/op 3200 allocs/op
qbs: 63.17s 1579254 ns/op 221992 B/op 6152 allocs/op
xorm: 83.58s 2089464 ns/op 189706 B/op 6815 allocs/op
hood: 91.41s 2285256 ns/op 254087 B/op 9226 allocs/op
```

#### Sample 3
```
40000 times - Insert
orm: 11.95s 298654 ns/op 1512 B/op 35 allocs/op
xorm: 12.47s 311666 ns/op 2179 B/op 53 allocs/op
qbs: 13.49s 337224 ns/op 5849 B/op 111 allocs/op
hood: 15.00s 374967 ns/op 14573 B/op 293 allocs/op

10000 times - MultiInsert 100 row
orm: 22.95s 2294502 ns/op 84920 B/op 853 allocs/op
xorm: 26.01s 2600964 ns/op 112579 B/op 1877 allocs/op
qbs: Not support multi insert
hood: Not support multi insert

40000 times - Update
orm: 13.17s 329226 ns/op 1461 B/op 34 allocs/op
qbs: 13.27s 331845 ns/op 5847 B/op 111 allocs/op
xorm: 13.64s 340992 ns/op 2502 B/op 73 allocs/op
hood: 14.79s 369635 ns/op 14576 B/op 293 allocs/op

80000 times - Read
orm: 20.10s 251271 ns/op 2738 B/op 81 allocs/op
hood: 20.45s 255610 ns/op 4960 B/op 96 allocs/op
qbs: 21.13s 264091 ns/op 8651 B/op 180 allocs/op
xorm: 27.60s 345010 ns/op 6801 B/op 193 allocs/op

40000 times - MultiRead limit 100
orm: 40.36s 1008896 ns/op 90137 B/op 3200 allocs/op
qbs: 64.53s 1613287 ns/op 222005 B/op 6152 allocs/op
xorm: 81.46s 2036502 ns/op 189573 B/op 6815 allocs/op
hood: 90.95s 2273773 ns/op 253770 B/op 9225 allocs/op
```


### Contact

Maintain by [slene](https://github.com/slene)
Loading