新的Mono Continuations / 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秒,而原始循环几乎是不稳定的。虽然预计会有开销,但这似乎有点多了。
新的Mono Continuations / Tasklet框架的主要性能开销是多少?这个开销(协程性能/原始性能)与其他框架(如Lua Coroutine和无堆栈python)相比如何?
由于
答案 0 :(得分:5)
如果我没算错,那么你的代码每秒产生的收益超过200万,这应该与无堆栈python在同一个场上。
考虑到mono通常会比python快10到100倍执行真正的应用程序代码,性能可能会非常好,除非你的所有代码都没有做任何真正的工作,我不认为非常有用:)
答案 1 :(得分:3)
鉴于很少有人有专业知识来回答这个问题,你可能不得不去找他们,并在单一列表上询问。
您还可以查看档案以查看引入时围绕monoco / tasklet的讨论:
http://lists.ximian.com/pipermail/mono-devel-list/2009-April/031680.html