欢迎入坑我的新项目: Go 语言高性能编程

2020-12-13 19:02:51 +08:00
 gzdaijie

在实现 7days-golang 这个项目过程中,接触到了很多开源项目的源码,里面有很多优雅的实现,结合最近工作中的一些经历,启动了「 Go 语言高性能编程」这个开源电子书项目。Go 语言优秀的电子书其实蛮多的,比如 Go 语言原本,Go 语言实现与设计等,可能对大部分童鞋来说过于深奥了。「 Go 语言高性能编程」这个项目聚焦于编程实践,同时会有少量的原理分析,比较适合希望无痛进阶的初学者~

一个月利用碎片时间写了十篇文章,还顺便改造了下我的 hexo 博客模板,融合了 gitbook 的排版方式。

感兴趣的童鞋可以关注一波,这个项目也是一起兴起,比较肝,提交时间基本在凌晨了。七天用 Go 从零实现这个项目也会继续维护的,不过这个项目特别需要整块的时间,最近整块时间实在太少,新坑一直没填上。

项目地址:high-performance-go

10368 次点击
所在节点    Go 编程语言
84 条回复
kevinwan
2020-12-13 19:04:24 +08:00
支持
gzdaijie
2020-12-13 19:05:24 +08:00
@kevinwan 活捉大佬一枚,关注了~
kevinwan
2020-12-13 19:14:31 +08:00
@gzdaijie 共建 Go 生态🤝
youngce
2020-12-13 19:42:02 +08:00
支持!!!!看过博主的 geecache 系列,太棒了
oxromantic
2020-12-13 20:04:41 +08:00
减少体积那个。。。upx 就不要拿出来提了吧,另外都用 go 了,也不会在乎细微的体积差别了
gzdaijie
2020-12-13 20:10:42 +08:00
@oxromantic 因为在公司会做一些插件小工具,10MB 压缩到 3MB,7MB 的差异对我来说,是至关重要的,不知道有啥更好的压缩体积的方法?
gzdaijie
2020-12-13 20:11:26 +08:00
@youngce 笔芯~
Mitt
2020-12-13 20:22:35 +08:00
@gzdaijie #6 要是 windows 这种用户类的软件可能 upx 有点用,不然可能会起反效果,upx 的解压过程在内存里,没必要为了省那点硬盘浪费内存
wzw
2020-12-13 20:27:25 +08:00
每一篇,都值得看,谢谢
gzdaijie
2020-12-13 20:32:34 +08:00
@Mitt 感谢建议,我可以再去探索下各种场景的实践。我自己服务器部署的服务是不会用的,但是一些插件的场景,考虑到设备空间,或是 hook 的场景,套在常用命令前执行,体积对性能上是有影响的。
wzw
2020-12-13 21:11:53 +08:00
减少编译体积,会影响性能吗
SjwNo1
2020-12-13 21:14:26 +08:00
收藏了 慢慢看
cabing
2020-12-13 21:22:52 +08:00
棒棒哒,建议可以完善下 go 的并发工具。参考 juc
mouzhiyang
2020-12-13 21:25:30 +08:00
支持
CrazyBoyFeng
2020-12-13 21:30:08 +08:00
减少体积这条现在意义不大,-s 和-w 参数能省的空间并不多。比较有效的就是 upx,但在启动时解压缩会多消耗 cpu 和内存。
不知道 golang 官方有没有出动态链接编译的计划。搭配发行 runtime environment 或者发行模块化动态链接库。做到一库多用。只有这样才能节省硬盘和内存。不过如此一来,就需要处理依赖问题。
现在这样静态编译挺不适合低端硬件的嵌入式编程的。ram 和 rom 都较小的情况下,一库多用才是经济合理的。
gzdaijie
2020-12-13 21:33:59 +08:00
@wzw upx 带壳压缩,优点是仍可以直接运行,缺点是,运行时动态解压。不过实际应用过程中,解压感觉几乎是无影响的,所以对体积比较敏感的场合还是推荐用的,比如嵌入式设备。体积会影响加载和网络传输时间。通过编译选项减小体积是能提高性能的。
oxromantic
2020-12-13 21:38:14 +08:00
@gzdaijie 嵌入设备必须使用支持压缩的文件系统吧,这样 upx 也没必要了
gzdaijie
2020-12-13 21:45:20 +08:00
@oxromantic,嗯,这种是不需要的。但文件系统不是必须,嵌入式设备种类很多,家用路由器是,树莓派是,体积庞大的基站其实也是。不过因为体积和内存,Go 在这块的应用场景还非常有限,要求稍微高一点,就只能用 C 了。
CrazyBoyFeng
2020-12-13 21:47:53 +08:00
@CrazyBoyFeng 我查到 go 已经有动态链接编译的模式了,出来的 helloworld 只有 22kb,但是因为 go 几乎没有二进制依赖库管理机制,至今极难面向用户推行这种模式。
gzdaijie
2020-12-13 21:48:29 +08:00
@cabing 非常感谢你的建议,才刚刚开始写不久,通过讨论慢慢地拓宽视野。

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

https://www.v2ex.com/t/735027

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

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

© 2021 V2EX