すでに完全な行列を完全な行列に変換するのが遅いことに気付きました:
>> tic; for k = 1:100; x = uint16(ones(10000,100)); end; toc
Elapsed time is 0.035748 seconds.
>> tic; for k = 1:100; x = uint16(uint16(ones(10000,100))); end; toc
Elapsed time is 0.034180 seconds.
>> tic; for k = 1:100; x = full(uint16(ones(10000,100))); end; toc
Elapsed time is 0.460977 seconds. %%%%% SLOW!
私もなしでテストしuint16
ました:
>> tic; for k = 1:100; x = ones(10000,100); end; toc
Elapsed time is 0.060028 seconds.
>> tic; for k = 1:100; x = full(ones(10000,100)); end; toc
Elapsed time is 0.229058 seconds. %%%%% SLOW!
同じ効果。
どうしてこれなの?full
疎行列を完全行列にのみ変換することになっています。すでに満杯の場合は、何もしないでください。
編集:issparse
超高速です!私はMEXだと思いますが、それは主にメモリコストですか?
Mac OS X 上の MATLAB バージョン 7.13.0.564 (R2011b)