4

新しいMonoContinuations/ Taskletフレームワークの主なパフォーマンスオーバーヘッド(gc /スタックコピー...)は何ですか?

このオーバーヘッド(コルーチンパフォーマンス/生のパフォーマンス)は、Lua CoroutineやスタックレスPythonなどの他のフレームワークとどのように比較されますか?

Mono 2.6では、継続/コルーチンのサポートが追加されます。私はsvnバージョンを作成し、次のコードを使用してそのオーバーヘッドを見積もりました

static void Main()
{
    Console.WriteLine("starting.,..");
    for(int i = 0; i < 10000; i++)
    {
        MicroThread t1 = new MicroThread(Run1);
        t1.Start();
    }
    Scheduler.Run();
    Console.WriteLine("starting raw loop.,..");
    int x = 2;
    for (int i = 0; i < 10000 * 400; i++ )
    {
        x++;
    }
    Console.WriteLine("1finished.,.. " + x.ToString());
    Console.ReadLine();
}

static void Run1()
{
    for (int y = 0; y < 400; y++)
    {
        MicroThread.CurrentThread.Yield();
    }
}

マイクロスレッド/スケジューラーの実行には約1.5〜2秒かかりましたが、生のループはほぼ瞬時に実行されます。オーバーヘッドが予想されますが、これは少し多いようです。

新しいMonoContinuations/ Taskletフレームワークの主なパフォーマンスオーバーヘッドは何ですか?このオーバーヘッド(コルーチンパフォーマンス/生のパフォーマンス)は、Lua CoroutineやスタックレスPythonなどの他のフレームワークとどのように比較されますか?

ありがとう

4

2 に答える 2

5

私が間違って数えていなければ、あなたのコードは 1 秒あたり 200 万回以上の利回りを実行します。これは、スタックレス python とほぼ同じ球場にあるはずです。

mono は通常、実際のアプリケーション コードを python よりも 10 倍から 100 倍高速に実行することを考慮すると、コードが実際の作業をまったく行わずに生成するだけでない限り、パフォーマンスは非常に高くなる可能性があります。これはあまり有用ではないと思います。 :)

于 2009-08-18T06:53:13.547 に答える
3

これに答える専門知識を持った人がほとんどいないことを考えると、彼らに行って mono-devel リストで質問する必要があるかもしれません。

アーカイブを見て、monoco/tasklet が導入されたときの議論を確認することもできます。

http://lists.ximian.com/pipermail/mono-devel-list/2009-April/031680.html

于 2009-08-17T23:03:50.247 に答える