d如何减小大小

原文

//empty.d:
void main() {

}
dmd -de -w empty.d

空代码,却有869KiB.如何减小?

这是正常的,默认你有很多类型信息(允许动态自省的静态数据),在隐式导入object.d中的代码,运行时(如用于GC的代码).
除了使用-betterC,真的可以摆脱它,但会看到所有使默认主程序变大的东西在实际程序中很有用.
只是目前,D还没有那么"随用随付".

问题是druntime,需要支持许多D特性,它很大且默认是完整链接的.链接器去掉未使用函数,但即使在空程序中,在main引入大部分函数前也要做很多工作:
1,初化浮点设置,处理信号,stdoutstderr
2,解析--DRT来配置垃集的命令行选项.
3,运行模块构造器/单元测试
一个目标是让druntime更加"按需付费",但进展缓慢.同时,如果可不用很多需要运行时D特性,你可用-betterC,文档.
使用LDC2编译器,可用--link-defaultlib-shared
,在多个程序共享时,可重用.最后,可查看运行时的自定义版本,如LightWeightDRuntime,见此
如果编译速度细节不重要,可用带有-O1参数的ldc2.

posted @ 2022-08-16 20:55  zjh6  阅读(32)  评论(0)    收藏  举报  来源