プログラミングでアイデアを具現化したい

あらゆるものを具現化するためにプログラミングを始めました。主にC#

並列プログラミング

通常のループ処理

namespace ParallelTest {
    class Program {
        static void Main(string[] args) {
            var sw = new System.Diagnostics.Stopwatch();
            var intList = Enumerable.Range(1, 10);

            sw.Start();
            foreach (var i in intList) {
                Console.WriteLine(i.ToString() + ":" + sw.Elapsed);
                System.Threading.Thread.Sleep(500);
            }
            sw.Stop();
            Console.WriteLine("終了:" + sw.Elapsed);
            Console.ReadKey();
        }
    }
}

完了には5秒程度かかる。
f:id:tos5511:20171109204238p:plain



並列処理する場合

namespace ParallelTest {
    class Program {
        static void Main(string[] args) {
            var sw = new System.Diagnostics.Stopwatch();
            var intList = Enumerable.Range(1, 10);

            sw.Start();
            Parallel.ForEach(intList, i => {
                Console.WriteLine(i.ToString() + ":" + sw.Elapsed);
                System.Threading.Thread.Sleep(500);
            });
            
            sw.Stop();
            Console.WriteLine("終了:" + sw.Elapsed);
            Console.ReadKey();
        }
    }
}

Parallelの特性上、コレクションへのアクセス順序は保証されないが、
一気に並列処理するため、トータルで1秒程度で完了する。・・やばくね?(笑)
f:id:tos5511:20171109205420p:plain