0

問題を説明するために、Microsoft Scripting Runtime への参照と以下のコードを使用して C# プロジェクトをコンパイルします。結果の実行可能ファイルの単一のインスタンスを実行します。私の 12 コア マシンでは、読み取りループは一貫して約 180 ミリ秒かかります。実行可能ファイルの別のインスタンスを開始すると、これが遅くなり、追加の実行可能ファイルごとに約 100 ミリ秒かかります。

何が起こっているのですか?また、別の辞書の実装に切り替える以外の解決策はありますか?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication4
{
    class Program
    {
        static void Main(string[] args)
        {
            System.Diagnostics.Stopwatch stp = new System.Diagnostics.Stopwatch();
            var dict = (Scripting.IDictionary)(new Scripting.Dictionary());
            stp.Start();
            for (int i = 1; i < 1000; ++i)
            {
                Object s = i.ToString();
                dict.Add(ref s, ref s);
            }
            Console.WriteLine("After Add {0}", stp.ElapsedMilliseconds);
            object q = null;
            for (int j = 0; j < 1000; ++j)
            {
                long old = stp.ElapsedMilliseconds;
                for (int i = 1; i < 10000; ++i)
                {
                    q = null;
                    object s = i.ToString() as object;
                    q = dict.get_Item(ref s);
                }
                long newval = stp.ElapsedMilliseconds;
                Console.WriteLine("After Retrieve {0}", newval - old);
            }

        }
    }
}
4

1 に答える 1