我的一个答案最近因建议使用cd(path_to_toolbox
) 而不是其中一种path
工具(例如addpath
or )而被否决rmpath
。鉴于我收到的强烈批评,我必须想象使用这些工具有很好的理由path
,大概它们在某种程度上更健壮,尤其是当代码分发到其他系统时。
然后我决定记录cd
vs的表现,addpath
惊讶地发现以下结果。在每次试验之前,我清除了工作区并创建了一个带有交替路径的字符串数组:
clear
clc
p1 = 'c:\MATLAB7\toolbox\symbolic\@sym\';
p2 = matlabroot;
newpath = repmat(' ',100,100);
for ii=1:2:99
newpath(ii,1:length(p1)) = p1;
newpath(ii+1,1:length(p2)) = p2;
end
然后我运行或者addpath
如下cd
:
tic
for ii=1:100
addpath(newpath(ii,:))
end
toc
经过的时间是 13.437000 秒。
tic
for ii=1:100
cd(newpath(ii,:))
end
toc
经过的时间是 1.078000 秒。
任何关于是否存在cd
可以证明使用的条件的评论,例如设置函数的路径(工具箱或其他),都值得赞赏。虽然它可能被认为是草率的,但我已经使用cd
了很多年,虽然如果反复使用减速可能会很明显,但我发现如果它不在程序的高度迭代部分中使用,减速是值得的,它为编码带来的简单性。值得注意的是,addpath
使用起来并不复杂,但现在我似乎有一个真正的理由更喜欢cd
它:它实际上更快。
编辑
作为这篇文章的附言,我恳求我不正当使用cd
(在这个例子中,addpath
)。然而,在一种经常用于快速而肮脏的脚本编写的语言中,应该有这样的使用空间。应该记住,matlab 用户的专业知识是有等级的,在某些情况下,不那么“高级”和看似草率的编程技术实际上可以被解释为在短期内是有利的(如果不是长期的话,或版本和目录结构管理可能会出现问题的地方)。
作为附录,我包含了一些指向 SO 上的帖子的链接以及超出该地址的内置函数覆盖、阴影等,其中addpath
(我也会争论cd
)可以使用:
http://www.mathworks.in/matlabcentral/newsreader/view_thread/264354