更快的对数函数和指数

时间:2014-12-29 05:01:35

标签: performance matlab

我有一个大矩阵A,我需要计算log的值(1 + exp(A))(必须对A的每个元素进行计算 - 是的,这是gumbel分布的期望值) 。经过一些试验和错误,我意识到如果A足够大,那么这就是循环实际上比矢量化更快的情况之一:

N=25000*20;
n=15;

draws=50;
speed_test=ones(draws,2);

A=rand(N*S,n);
C1=A; %Allocate Memory
C2=A; %Allocate Memory

for t=1:draws
    tic; C1=log(1+exp(A)); speed_test(t,1)=toc;

    tic;
    for i=1:n
        C2(:,i)=log(1+exp(A(:,i)));
    end
    speed_test(t,2)=toc;

end

mean(speed_test)

产生mean(speed_test)= 0.1789 0.1689或快6%左右。我想知道是否有人有任何其他建议来加快这个计算?我听说在C(即mex)中执行log和exp等功能可以快得多。

0 个答案:

没有答案