2009-08-17 25 views
4

新的Mono Continuations/Tasklet框架的主要性能開銷(gc/stack copying ...)是什麼?Mono Tasklet/Co-Routines的開銷

這種開銷(協同性能/原始性能)與其他框架如Lua Coroutine和無堆棧python相比如何?

在單聲道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。雖然預計會有開銷,但這似乎有點多。

新的Mono Continuations/Tasklet框架的主要性能開銷是多少?這種開銷(協同性能/原始性能)與其他框架(如Lua Coroutine和無堆棧python)相比如何?

感謝

回答

5

如果我沒算錯,你的代碼做每超過200萬噸的產量其次,它應該與堆疊蟒蛇完全一樣。

考慮到mono通常會以比python快10到100倍的速度執行真正的應用程序代碼,性能可能會非常好,除非您的所有代碼都是在沒有做任何實際工作的情況下完成的,而我並不認爲是非常有用的:)

3

鑑於有極少數人的專業知識來回答這個問題,你可能不得不去給他們,並要求單devel的名單上。

您也可以看看檔案館看到周圍monoco /微進程的討論時,剛開始:

http://lists.ximian.com/pipermail/mono-devel-list/2009-April/031680.html

+0

也許是一個很好的建議。 – jameszhao00 2009-08-17 23:30:11

+1

謝謝你的鏈接。我看了一下,不幸的是單聲道延續是堆棧複製類,而不是堆棧指針類。 – jameszhao00 2009-08-17 23:36:42