主要性能开销是什么(gc/堆栈复制.)新的Mono延续/任务框架?
这种开销(coroutine性能/原始性能)与其他框架(如Lua Coroutine和无堆栈python? )相比如何?
在Mono2.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秒,而raw循环几乎是瞬间的。虽然预计会有一个开销,但这似乎有点大。
新的Mono延续/Tasklet框架的主要性能开销是什么?与其他框架(如Lua和无堆栈python )相比,这种开销(coroutine性能/原始性能)如何?
谢谢
发布于 2009-08-18 06:53:13
如果我没有计算错的话,您的代码每秒会产生200多万个输出,这应该与无堆栈的python大致相同。
考虑到mono通常执行实际应用程序代码的速度是python的10至100倍,除非您的所有代码都是在不执行任何实际工作的情况下生成,否则性能可能会非常好:)
发布于 2009-08-17 23:03:50
考虑到只有很少的人有专业知识来回答这个问题,你可能不得不去问他们,并在单一发展清单上询问。
在引入monoco/tasklet时,您还可以查看档案以查看有关它的讨论:
http://lists.ximian.com/pipermail/mono-devel-list/2009-April/031680.html
https://stackoverflow.com/questions/1290051
复制相似问题