知识卡片
Go快速编译的依赖缓存机制
内容
Go编译奇快的关键不在于语法多好解析,而在于依赖管理方式:假设app.go依赖pkg1.go、pkg1.go又依赖pkg2.go,传统编译型语言编译app.go时需要pkg1.go和pkg2.go两份目标文件都在场;Go则会把pkg2.go所有对外导出的内容直接缓存进pkg1.go自己的目发散:这是”缓存换查找”的经典权衡——用略微增大目标文件体积的代价,换来了编译时不必递归遍历整棵依赖树,。
参考来源
- 位置:《Go语言程序设计》引言《为什么是Go》(源文件:_epub-src/OEBPS/text00034.html)
- 结论依据:原文在该章节围绕“Go编译奇快的关键不在于语法多好解析,而在于依赖管理方式:假设app.go依赖pkg1.go、pkg1.go又…”给出定义、示例或限制条件;摘录中的术语、代码片段或对比关系直接支撑本卡片的结论。
- 原始内容:以便构建非常大的应用,并可在普通计算机上用几秒钟即完成编译。快如闪电的编译速度可能在一定程度上是因为语言的语法很容易解析,但更主要是因为它的依赖管理。如果文件 app.go 依赖于文件 pkg1.go ,而 pkg1.go 又依赖于 pkg2.go ,在传统的编译型语言中, app.go 需要依赖于 pkg1.go 和 pkg2.go 目…