原文
//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.










