新しい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などの他のフレームワークとどのように比較されますか?
ありがとう