d的dmd减小文件大小
struct biig
{
int[1024 * 1024] biig = 0;
}
biig biig;
你用的是哪个版本的dmd
?我用2.098
(旧的gitmaster)
编译上面的代码,总的可执行文件大小只有900KB
.
记得大概一两年前有一个bug
,dmd
会生成1024*1024
存储指令来初化数组,但是我刚才反汇编了一下,现在是rep stos
,很小
LDC
是我用于发布构建的首选
编译器.我使用dmd
开发是因为周转时间更快
,但我也不关心使用dmd
时的性能/可执行文件大小
.
LDC
很好,但请注意,两个编译器的目标文件同样大.显然,应该归因于尺寸减小的是链接器
.这让我想知道main
函数是什么样子的,因为它可已经初化整个作为死代码
删除了.
DMD 5mb
LDC 200kb
除非绝对必要,否则你真的不应有这么大的结构
.
被省略的是运行时使用的初化程序和指针位图
是LDC
的链接器消除了多余的重量.可通过使用dmd-c
自己来证明该点,然后自己链接目标文件,提供额外的LTO
选项来丢弃未引用的部分
加上如下,dmd
变小了:
/OPT:REF
/OPT:ICF
只有1M
.
/OPT:REF
删除死码,/OPT:ICF
,折叠相同COMDAT
.调试时,就不要加上这两个选项.
/Gy
允许函数级链接
.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现