Eu tenho o seguinte MATLAB trecho:
>> R = randn(3000,6000); % build a random 3000 by 6000 matrix
>> tic; norm(R, 1); toc;
Elapsed time is 0.005586 seconds.
>> tic; norm(R, 2); toc;
Elapsed time is 3.019667 seconds.
>> tic; norm(R, inf); toc;
Elapsed time is 0.005393 seconds.
>>
A minha pergunta é, por que a norma L2 de cálculo será muito mais lenta do que a L1 ou L infinito norma? Esta é uma matriz aleatória para fins de teste, é claro, mas para a própria matriz no meu trabalho eu posso ver um padrão semelhante, em termos de tempo decorrido.
No entanto, em Julia, os resultados são como segue
julia> @time norm(R, 1);
0.007156 seconds (1 allocation: 16 bytes)
julia> @time norm(R, 2);
0.009142 seconds (1 allocation: 16 bytes)
julia> @time norm(R, Inf);
0.034633 seconds (1 allocation: 16 bytes)
Isso não faz nenhum sentido. Qualquer ajuda é apreciada!
BenchmarkTools
como @ColinTBowers aponta, os tempos são: 1-norm=17ms, 2-norma=23ms, inf-norma=29ms. Portanto, não é absolutamente lento como os times em questão. Como para, porque ele não é mais rápido, parece que 1-a norma e a 2-norma chamada especializada BLAS métodos, considerando que o inf-norma só tem um genérico Julia implementação.