◆ソースコード
var list = Enumerable.Repeat(1, 1000 * 1000 * 200).ToList(); // 大量データ生成
① ForEach、ラムダを2回で、ループ内処理を1回
◆ソースコード
◆結果
1回目:Time=01.97秒, sum1=200000000, sum2=200000000
2回目:Time=02.09秒, sum1=200000000, sum2=200000000
int sum1 = 0, sum2 = 0;
list.ForEach((it) => sum1 += it);
list.ForEach((it) => sum2 += it);
1回目:Time=01.97秒, sum1=200000000, sum2=200000000
2回目:Time=02.09秒, sum1=200000000, sum2=200000000
② ForEach、ラムダを1回で、ループ内処理を2回
◆ソースコード
◆結果
1回目:Time=01.08秒, sum1=200000000, sum2=200000000
2回目:Time=01.03秒, sum1=200000000, sum2=200000000
int sum1 = 0, sum2 = 0;
list.ForEach((it) => { sum1 += it; sum2 += it; } );
1回目:Time=01.08秒, sum1=200000000, sum2=200000000
2回目:Time=01.03秒, sum1=200000000, sum2=200000000
③ forループを2回で、ループ内処理を1回
◆ソースコード
◆結果
1回目:Time=01.61秒, sum1=200000000, sum2=200000000
2回目:Time=01.45秒, sum1=200000000, sum2=200000000
int sum1 = 0, sum2 = 0;
for (int i = 0; i < list.Count; i++) sum1 += list[i];
for (int i = 0; i < list.Count; i++) sum2 += list[i];
1回目:Time=01.61秒, sum1=200000000, sum2=200000000
2回目:Time=01.45秒, sum1=200000000, sum2=200000000
④ forループを1回で、ループ内処理を2回
◆ソースコード
◆結果
1回目:Time=00.85秒, sum1=200000000, sum2=200000000
2回目:Time=00.78秒, sum1=200000000, sum2=200000000
int sum1 = 0, sum2 = 0;
for (int i = 0; i < list.Count; i++) { sum1 += list[i]; sum2 += list[i]; }
1回目:Time=00.85秒, sum1=200000000, sum2=200000000
2回目:Time=00.78秒, sum1=200000000, sum2=200000000
⑤ Aggregateを2回で、ループ内処理を1回(用途が適切でないと思うが、見てみる)
◆ソースコード
◆結果
1回目:Time=08.39秒, sum1=200000000, sum2=200000000
2回目:Time=05.65秒, sum1=200000000, sum2=200000000
var sum1 = list.Aggregate((elem1, elem2) => elem1 + elem2);
var sum2 = list.Aggregate((elem1, elem2) => elem1 + elem2);
1回目:Time=08.39秒, sum1=200000000, sum2=200000000
2回目:Time=05.65秒, sum1=200000000, sum2=200000000
■結論
当然と言えば、当然だが、処理時間は2倍になる。
コードの読みやすさは、人によって違うだろうけど、①かなぁ?
◎環境
●速度確認した仮想マシン
- CPU:4
- メモリ:2GB
- OS:Windows10
- 仮想マシン:VMWare ESXi6.0U2
- Visual Studio 2015 Enterprise(試用版)
- 構成:Releaseでビルド
- デバッグ情報(ビルドの詳細設定):none
- Visual Studio ホスティングプロセス:無効
- CPU:Intel Core i5-4250U
- メモリ:16GB
- ドライブ:SSD
0 件のコメント:
コメントを投稿