问题现象:在IDE中运行应用如果要加载大文件或是大模型时,非常慢。但编译成exe后运行时加载比较快。比如下面代码

var
model_path: string;
m_params: llama_model_params;
cp: llama_context_params;
params: llama_sampler_chain_params;
begin
ggml_backend_load_all();

model_path := ExtractFilePath(Application.ExeName) +
'Qwen3.5-4B-Q4_K_M.gguf'

m_params := llama_model_default_params;
m_params.n_gpu_layers := 10;
m_params.main_gpu := 0;
m_params.vocab_only := False;
m_params.use_mmap := True;

model := llama_load_model_from_file(PChar(model_path), m_params); //这里在IDE下要20多秒才能加载完成,直接运行exe只要2-3秒就加载完成。

解决方法:使用 附加到进程调试

既然编译的 EXE 本身很快,可以在 EXE 运行起来后再附加上去调试。

1)先直接运行你编译好的 myapp.exe(此时加载模型只需要 2-3 秒)。
2)在 Lazarus IDE 中,点击菜单 Run(运行) -> Attach to Program(附加到进程)。
3)在弹出的进程列表中,找到 myapp.exe 并点击 Attach。
4)此时,调试器会附加到一个已经加载完大模型的进程上,你可以像平时一样设置断点进行调试,完全避开了模型加载阶段的性能瓶颈。

posted on 2026-08-24 18:38  禁卫军  阅读(16)  评论(0)    收藏  举报