Tengo el siguiente fragmento de MATLAB:
>> 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.
>>
Mi pregunta es, ¿por qué el L2 norma de cálculo de ser mucho más lento que el de la L1 o L infinito norma? Esta es una matriz aleatoria para propósitos de prueba, por supuesto, pero para el real de la matriz, en mi trabajo, puedo ver un patrón similar en términos del tiempo transcurrido.
Sin embargo, en Julia, los resultados son como sigue
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)
Esto no tiene ningún sentido en absoluto. Cualquier ayuda es muy apreciada.
BenchmarkTools
como @ColinTBowers señala, los horarios son: 1-norm=17ms, 2-norm=23ms, inf-norm=29ms. Así que no es tan marcadamente lento como los tiempos en la pregunta. En cuanto a por qué no es más rápido, se ve como 1-norma y 2-norma llamada especializados BLAS métodos, mientras que el inf-norma sólo tiene un genérico Julia aplicación.