事件回顾
我在编写一个程序,程序中包含大量的循环运算,其中还使用了大量序号索引(如i_name1, i_name2等)。我对每块程序进行分段,并定期清理不用的变量和序号索引。
程序已经差不多写好了,我开始代码清理。再次运行程序时,我发现运行时长变成了原来的两倍。而我的程序的优势就是要运行时长更少……
故障排除
过程痛苦,简略描述一下:恢复到昨天的备份,然后凭记忆一步一步添加修改。最后发现,我删除了两个序号索引的声明,但是"clear 变量1 变量2……"语句中,仍然包含这两个序号索引。例如:
for i_iter = 1:...
% i_a = ...; % 这两个索引已经被注释了
% i_b = ...;
...... % 业务逻辑代码段
clear ... i_a i_b ... % 这里面没有去掉上面提到的两个索引,程序运行时长加倍
end
怒而去掉clear中不该有的这两个索引,运行时长居然恢复如初。
结论与教训
先说结论,使用clear语句必须小心,不得添加未声明的变量。
教训就是要严格备份文件,争取30分钟备份一次。