dzi*_*ner 10 performance matlab global-variables
我正在编写一个MATLAB应用程序,它有许多功能分布在不同的文件中.我有一个记录器,它是一个带有函数指针的结构,我用它来记录用户要查看的信息(即,当前正在执行哪个函数,计算结果等).我为记录器使用结构的原因并不仅仅是fprintf()我将来可以轻松地用XML记录器,HTML记录器等替换它.
由于我的代码由许多相互调用的函数组成,我将我的logger结构声明为全局,因此我不必将它传递给我的所有函数.然而,在我看到的任何地方,我都看到全局变量在MATLAB中是邪恶的化身,并且会大大减慢我的程序.
有没有办法让文件中的变量可用而不必将它们作为输入参数传递,并且不会受到严重的性能损失?
And*_*ein 10
您还可以在文件中使用persistent关键字,并在那里分配记录器.
它在某些方面类似于C++中的static关键字.它也是Singleton模式的一个实现.
function CallLogger(st)
persistent logger;
if isempty(logger)
%Allocate new logger
end
logger.disp(st);
end
Run Code Online (Sandbox Code Playgroud)
它比全球更好,因为
1.没有人可以在你不知情的情况下摧毁你的记录器.
没有人知道这个对象,因为它仅限于功能范围
顺便说一句,我不同意全球性有问题.就软件工程而言,这不是一个好的做法.
| 归档时间: |
|
| 查看次数: |
5931 次 |
| 最近记录: |