新的 Mono Continuations/Tasklet 框架的主要性能开销(gc/堆栈复制...)是什么?
与 Lua Coroutine 和 stackless 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 秒,而原始循环几乎是瞬间完成的。虽然预计会有开销,但这似乎有点多。
新的 Mono Continuations/Tasklet 框架的主要性能开销是什么?与 Lua Coroutine 和 stackless python 等其他框架相比,这种开销(协程性能/原始性能)如何?
谢谢