MATLAB では、z
任意のサイズの配列を入力として取ります。私は今w
、同じ次元の配列を作成したいと考えていますz
が、その値はどこk
にでもある実数です。私が考えた方法は以下の2つです。
z = rand(1000,1000); % pretend the size of z is not known beforehand
k = 2.3;
w = ones(size(z))*k;
w = zeros(size(z)) + k;
w = z - z + k;
これらの方法のどれが最速かを確認しようとしましたが、その結果には非常に驚きました。
tic; for n = 1:1000, w = ones(size(z))*k; end; toc
tic; for n = 1:1000, w = zeros(size(z)) + k; end; toc
tic; for n = 1:1000, w = z - z + k; end; toc
Elapsed time is 7.243662 seconds.
Elapsed time is 4.770328 seconds.
Elapsed time is 2.750093 seconds.
さらに驚くべきことは、 for k = 1
(ones()
最速だと思われる場所)
tic; for n = 1:1000, w = ones(size(z)); end; toc
tic; for n = 1:1000, w = z - z + 1; end; toc
Elapsed time is 4.856666 seconds.
Elapsed time is 2.759324 seconds.
私の質問は、ここでの私の結果は正しいですか? もしそうなら、w = z - z + k
の配列を初期化する最速の方法k
はありますか、それとももっと良い方法がありますか?