原文
//empty.d:
void main() {
}
dmd -de -w empty.d
空代码,却有869KiB
.如何减小?
这是正常的,默认你有很多类型信息
(允许动态自省
的静态数据),在隐式导入object.d
中的代码,运行时(如用于GC
的代码).
除了使用-betterC
,真的可以摆脱它,但会看到所有使默认主程序变大的东西在实际程序
中很有用.
只是目前,D
还没有那么"随用随付
".
问题是druntime
,需要支持许多D特性
,它很大且默认是完整链接
的.链接器
可去掉
未使用函数,但即使在空程序中,在main
引入大部分
函数前也要做很多工作:
1,初化浮点设置
,处理信号,stdout
和stderr
2,解析--DRT
来配置垃集的命令行选项
.
3,运行模块构造器/单元测试
一个目标是让druntime
更加"按需付费",但进展
缓慢.同时,如果可不用很多需要运行时
的D特性
,你可用-betterC
,文档.
使用LDC2
编译器,可用--link-defaultlib-shared
,在多个程序
共享时,可重用.最后,可查看运行时
的自定义版本,如LightWeightDRuntime
,见此 如果编译速度
和细节
不重要,可用带有-O1
参数的ldc2
.