d大开关中插件减慢编译速度
原文
可惜,因为该bug
需要在大的开关中插件
,不能分享小示例代码.
可在此处找到可触发该问题示例:这里
编译时间
主要由lexString.d
中lexHtmlEntity
的mixin
决定.
使用该函数,编译jsonlexer
,在系统上花费了45
秒.
如果没有它,则只需要0.3s
.
似乎有些非线性
,因为类似的开关插件
在其他地方也有,但在lexHtmlEntity
中的switch
肯定是最大的.
首先,你在一个函数中混合了35000
行的switch
语句.后端需要几秒钟
来生成
代码,当函数有很多域
时,会有二次减速
.
还使用了
format!"case '%s':"
与简单连接串
相比,在CTFE
中执行该操作
相当复杂.
但目前,最耗时的是在开关
下实例化了singleEntity!""
,2000
次.在模板中,你索引了带2000
个项的关联数组字面的'HtmlEntities'
枚举.这似乎占用了90%
的编译时间.
编译器应在重用
关联数组字面
方面更聪明一点.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现