Thanks! I'd like to clarify that we have no intentions to submit a PR to
the original project, because Go's team favors code simplicity over
performance most of the time and I'm pretty sure our patches will be
rejected. We will, however, maintain our fork for the foreseeable future
and we're also open to accepting PRs from other collaborators.

On Wednesday, October 30, 2013 5:30:05 PM UTC+1, Camilo Aguilar wrote:

Nice work Alberto, it is a shame that Brad doesn't maintain nor even
answer to PRs sent to his original project by collaborators.

On Wed, Oct 30, 2013 at 12:23 PM, Alberto García Hierro <
alb...@garciahierro.com <javascript:>> wrote:

After porting a site which heavily uses memcache from Python to Go I
noticed a lot of logged errors due to timeouts when communicating with
memcache. After a bit of profiling, I found that the library we were using (
https://github.com/bradfitz/gomemcache) didn't have very good
performance, so I decided to fork and improve it, in order to get better
cache response times and lower memory usage.

I've just uploaded the result at https://github.com/rainycape/gomemcache.
We're not using it in production yet, but we'll start doing so really soon
(probably tomorrow). Since everyone loves numbers, i'm attaching a
performance comparison between the old implementation and the new one to
this email.


benchmark old ns/op new ns/op delta
BenchmarkSetGet 214443 175154 -18.32%
BenchmarkSetGetLarge 262164 196155 -25.18%
BenchmarkConcurrentSetGetSmall10_100 82561221 62172865 -24.69%
BenchmarkConcurrentSetGetLarge10_100 96067285 74113235 -22.85%
BenchmarkConcurrentSetGetSmall20_100 152834658 116654143 -23.67%
BenchmarkConcurrentSetGetLarge20_100 202574186 144950678 -28.45%

benchmark old MB/s new MB/s speedup
BenchmarkSetGet 0.03 0.03 1.00x
BenchmarkSetGetLarge 4.82 6.44 1.34x
BenchmarkConcurrentSetGetSmall10_100 0.07 0.10 1.43x
BenchmarkConcurrentSetGetLarge10_100 13.16 17.05 1.30x
BenchmarkConcurrentSetGetSmall20_100 0.08 0.10 1.25x
BenchmarkConcurrentSetGetLarge20_100 12.48 17.44 1.40x

benchmark old allocs new allocs delta
BenchmarkSetGet 18 6 -66.67%
BenchmarkSetGetLarge 19 6 -68.42%
BenchmarkConcurrentSetGetSmall10_100 58469 6268 -89.28%
BenchmarkConcurrentSetGetLarge10_100 59848 6277 -89.51%
BenchmarkConcurrentSetGetSmall20_100 117177 12663 -89.19%
BenchmarkConcurrentSetGetLarge20_100 120173 12686 -89.44%

benchmark old bytes new bytes delta
BenchmarkSetGet 2479 170 -93.14%
BenchmarkSetGetLarge 7537 1184 -84.29%
BenchmarkConcurrentSetGetSmall10_100 3101520 203867 -93.43%
BenchmarkConcurrentSetGetLarge10_100 8330341 1211143 -85.46%
BenchmarkConcurrentSetGetSmall20_100 6318072 421952 -93.32%
BenchmarkConcurrentSetGetLarge20_100 16884200 2437906 -85.56%

You received this message because you are subscribed to the Google Groups
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an
email to golang-nuts...@googlegroups.com <javascript:>.
For more options, visit https://groups.google.com/groups/opt_out.

*Camilo Aguilar*
Software Engineer

You received this message because you are subscribed to the Google Groups "golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Search Discussions

Discussion Posts


Follow ups

Related Discussions

Discussion Navigation
viewthread | post
posts ‹ prev | 3 of 12 | next ›
Discussion Overview
groupgolang-nuts @
postedOct 30, '13 at 4:24p
activeOct 31, '13 at 9:28p



site design / logo © 2022 Grokbase