1K 行 C 写了 3 年,这是我从业以来写过的最烧脑的代码!

2018-01-23 15:11:01 +08:00
 begeekmyfriend
就这么一个数据结构玩意儿,B+树磁盘存储 CRUD: https://github.com/begeekmyfriend/bplustree

从 2014 年 9 月第一次提交了内存版本实现,到 2018 年 1 月的磁盘版本,总共(坚持)提交了近 200 次。。。

我已经没有力气去说明这三年都迭代了些什么,总之取得了这样的性能(视机器而定)

100W 插入——~3s
100W 删除——~3s
1KW 插入——<30s
1KW 删除——<30s
1 亿插入——<5min
1 亿删除——<5min
10 亿插入——~45min
10 亿删除——~45min

好吧,1 billion 那是我意淫的,我等不起这么多时间。。。读性能就不用列了吧,B+树你懂的

老实说 3 年前我就想写一个 DB,SQL 那种,但光一个 B+树耗了我 3 年最好的时光。我承认不是天才,3 年的迭代都是我犯过的浑与错误,一直坚持到现在。我以为与其写一个各方面都平庸的成品,不如写一个尽量做到极致的 demo,代码量基本维持在 1K 行。好歹也累积了 300+stars 了,感谢用户们的认可。

这种迭代是烧脑的,也是痛苦的。每一次对结构体的压榨,都要牵动数百行源文件的更改,有时候一个提交意味着一整个下午,我的大脑长时间处于马拉松选手泡在 20~30 公里处的感觉,相信不少同行都有过这种体验。。。

不多说了,大家认为有何改进的地方,欢迎交流~
19265 次点击
所在节点    程序员
131 条回复
wangmm
2018-01-23 15:13:21 +08:00
厉害 程序小白摩拜!
hahasong
2018-01-23 15:14:49 +08:00
程序小白 OFO
Applenice
2018-01-23 15:17:52 +08:00
程序小白 小蓝
allen6699
2018-01-23 15:19:43 +08:00
程序小白 滴滴
xjr1022
2018-01-23 15:20:37 +08:00
程序小白 滴滴
Ethous
2018-01-23 15:22:29 +08:00
一件事,能坚持做三年。这种毅力值得点赞!
stoldog
2018-01-23 15:23:27 +08:00
程序小白 HelloBike
zorui
2018-01-23 15:26:00 +08:00
程序小白 小鸣
xntop
2018-01-23 15:36:14 +08:00
关键是视机器而定,哈哈
jzds001
2018-01-23 15:37:27 +08:00
赞坐
owenliang
2018-01-23 15:46:18 +08:00
红黑书与 B 树是我从来没试图写过的数据结构,虽然后面 K/V 时代出现了更多牛逼的树,但都很难!
ZyZyZzz
2018-01-23 15:46:37 +08:00
@Livid 这是一个极好的主题贴,然而你来看看我楼上都回复了些什么
ynyounuo
2018-01-23 15:52:20 +08:00
恭喜你,你的心里有了 B 树
jadec0der
2018-01-23 15:52:41 +08:00
lz 牛逼啊,这么有耐心,佩服佩服
Applenice
2018-01-23 15:55:12 +08:00
去点了 star~~~
wowo243
2018-01-23 15:56:39 +08:00
我是来看回复的。。。
luckychenhaha
2018-01-23 16:01:23 +08:00
666,先 star 为敬
jecshcier
2018-01-23 16:08:20 +08:00
看回复来的。。。
codexu
2018-01-23 16:12:36 +08:00
给大佬递 star
soli
2018-01-23 16:13:11 +08:00
不来个横向对比么?
比如和 Redis、MySQL 等对比一下性能?

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

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

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

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

© 2021 V2EX