Disqus 用 Go 取代 Python 的经验分享

2014-05-08 15:14:06 +08:00
 Livid
http://highscalability.com/blog/2014/5/7/update-on-disqus-its-still-about-realtime-but-go-demolishes.html
4138 次点击
所在节点    Go 编程语言
26 条回复
skybr
2014-05-08 20:21:38 +08:00
@jjx 我用到了sync.Pool, 一直在跟开发版, 怀疑是版本差异导致的, 试了下1.2, 确实.

https://gist.github.com/anonymous/7bdc0e9ce839e4d51052
guotie
2014-05-08 20:26:11 +08:00
开发版本有这么nb?

上次用开发版本测试martini的性能,没有比1.2高啊
skybr
2014-05-08 20:37:01 +08:00
把python的例子改成cython, 去掉这个例子里没什么用处的wait_available, 运行结果和纯python的差距不大.
https://gist.github.com/anonymous/e531394bbda389e4990f


@guotie martini的开销主要落在运行时的反射处理上, 所以提升不大吧.
jjx
2014-05-08 21:09:55 +08:00
试了一下1.3, 得确这个提升的有点吃惊

不过我所知道的很多搞python的都随带着在用go, 也是好事
srdrm
2014-05-08 21:11:56 +08:00
@skybr 调用多了,差距再小也大。
======================
同意这个观点
est
2014-05-08 22:14:32 +08:00
@yueyoum 是的啊。

ulimit -a
stack size (kbytes, -s) 8192

一个线程8MB。多线程能撑多少连接可以直接算出来。当然你可以改pthread_attr_setstacksize之类东西弄小一点,但是也会有其他问题。

所以说posix下线程跟进程一样重。


相比而言,一个goroutine才4KB大。(Go 1.2是8KB)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/111643

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX