【发布时间】:2019-03-22 21:38:57
【问题描述】:
我已经在 logits 上工作了一段时间,我需要使用内置的 exp() 函数。与使用具有较小块相同矩阵的 for 循环相比,对于大型矩阵,这似乎运行得更慢。
在 Matlab 文档和其他几种形式中,始终建议对代码进行矢量化以加快速度。但这里似乎不是这样。
n = 32;
rows = 50000;
cols = 32;
a = rand(n*rows, cols);
b = rand(rows, cols);
% in a loop
tic
for i=1:n
d = exp(b);
end
toc
% big matrix
tic
d = exp(a);
toc
我预计第一个 tic-toc 会比第二个慢。但我得到的输出如下:
Elapsed time is 0.335781 seconds.
Elapsed time is 0.390191 seconds.
任何关于为什么会这样的想法都会有所帮助。
编辑 1 假设我像这样编辑我的代码以便每次都使用随机值:
n = 32;
rows = 50000;
cols = 32;
% in a loop
tic
for i=1:n
d = exp(rand(rows, cols));
end
toc
% big matrix
tic
e = exp(rand(n*rows, cols));
toc
return
我仍然得到:
Elapsed time is 0.745808 seconds.
Elapsed time is 0.847162 seconds.
【问题讨论】:
标签: matlab performance exp