单任务蕾/协同例程的开销
-
18-09-2019 - |
题
什么是新的单声道延续/微进程框架的主要性能方面的开销(GC /堆栈复制...)?
如何做到这一点的开销(协程的性能/原始性能)比其他框架如Lua的协程和无堆栈蟒吗
在单声道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秒,而原始循环几乎instantenously。尽管架空预计,这似乎有点多。
什么是新的单声道延续/微进程框架的主要性能开销?这是如何开销(协程的性能/原始性能)比其他框架如Lua的协程和无堆栈蟒?
由于
解决方案
如果我没算错,你的代码确实每秒超过200万吨的产量,这应该是roughtly在同一个球场作为无堆叠蟒蛇。
考虑到单通常会执行实际的应用程序代码比Python快10到100倍,性能可能会是很不错的,除非所有的代码确实是产量没有做过任何真正的工作,我不认为是非常有用的:)
其他提示
由于有极少数人的专业知识来回答这个问题,你可能不得不去给他们,并要求单devel的名单上。
您也可以看看档案馆看到周围monoco /微进程的讨论时,刚开始:
http://lists.ximian.com /pipermail/mono-devel-list/2009-April/031680.html
不隶属于 StackOverflow