主要观点:使用 Go 编写世界上第一个版本控制的 SQL 数据库 Dolt,通过避免在关键节点使用接口使表扫描速度提高 24%。
关键信息:
- 接口可模块化代码、在编译时强制行为实现、帮助聚合高阶逻辑、绕过导入循环,但不提升代码速度。
- 对比接口和非接口版本的性能,接口版本更灵活但更慢,如在将整数转换为字符串的例子中。
- 在 Dolt 的表扫描中,大量使用接口导致约 12%的 CPU 时间用于运行
convT
变体,通过重新安排操作顺序避免runtime.convT64
,节省时间和内存,使 sysbench 表扫描提高 24%。
重要细节: - 展示了接口在不同代码场景中的示例,如
Pet
和Person
实现String()
方法可赋值给Stringer
类型变量,Catalog
接口在不同存储层有不同实现。 - 给出了性能测试的代码和结果,如
f1
和f2
的基准测试,以及types.IntType.SQL
优化前后的对比。 - 介绍了 Dolt 中表扫描的具体过程和
Convert
方法的作用,以及如何通过优化避免接口指针的 malloc 操作。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。