나는 전체 행렬에 이미 전체 행렬의 변환은 느린 것으로 나타났습니다 :전체 행렬을 전체 행렬로 변환하는 속도가 느립니까?
>> 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가 된 것 같아요, 대부분 메모리 비용 이죠?
맥 OS X
이 컨텍스트는 무엇입니까? 느린 경우에는하지 마십시오. 'issparse'를 사용하여 실제로 변환해야하는지 테스트하십시오. – zeFrenchy
어쩌면 변환하지 않고 그냥해야하는지 확인하는 것이고, 느린 부분일까요? – Smash
@DominiqueJacquel 이미'full' 전에'issparse'를하도록 제 코드를 변경했습니다. 약간 성가시다. 그러나 나는 살 것이다. 이것은 대부분 호기심에서 벗어났습니다. – Memming