В попытке выбрать, какой метод индексирования рекомендуется рекомендовать, я попытался измерить производительность. Однако измерения меня смутили. Я выполнял это несколько раз в разных порядках, но измерения оставались неизменными. Вот как я измерил производительность:
for N = [10000 15000 100000 150000]
x = round(rand(N,1)*5)-2;
idx1 = x~=0;
idx2 = abs(x)>0;
tic
for t = 1:5000
idx1 = x~=0;
end
toc
tic
for t = 1:5000
idx2 = abs(x)>0;
end
toc
end
И это результат:
Elapsed time is 0.203504 seconds.
Elapsed time is 0.230439 seconds.
Elapsed time is 0.319840 seconds.
Elapsed time is 0.352562 seconds.
Elapsed time is 2.118108 seconds. % This is the strange part
Elapsed time is 0.434818 seconds.
Elapsed time is 0.508882 seconds.
Elapsed time is 0.550144 seconds.
Я проверил, и для значений около 100000 это также происходит, даже при 50000 происходят странные измерения.
Итак, мой вопрос: кто-нибудь еще испытывает это для определенного диапазона, и что вызывает это? (Это ошибка?)