.Net程式在linux mono環境和WindowsServer上執行測試對比
最近研究了一下mono,想把windows上寫的.Net程式移植到linux上跑。網上有資料說Linux上mono執行.Net程式效率比Windows高,本著實證的態度,只有實際驗證過才有說服力。
寫了個程式驗證一下,發現linux上的mono環境執行效率確實高些,現將測試過程記錄如下。
測試環境:
1、膝上型電腦 Lenovo T430 CPU Intel i5-3230M 記憶體8G 作業系統 Windows7 64位旗艦版
2、測試程式執行環境,在Oracle VM VirtualBox5.0.16上配置虛擬機器兩臺
Windows虛擬機器: 2G記憶體、1CPU,作業系統WindowsServer2008,執行環境.net framework4.5.2
Linux虛擬機器:2G記憶體、1CPU,作業系統CentOS6.7,執行環境mono4.4
為了更有說服性,使用Xamarin Studio5.10.3和Visual Studio 2013分別開發一個控制檯測試程式,解決方案配置均為Release
程式核心程式碼如下:
using System; using System.Data; using System.Diagnostics; namespace monotest { class MainClass { public static void Main (string[] args) { Console.WriteLine ("Hello World!"); testCount (); } private static void testCount() { Stopwatch watch=new Stopwatch(); int count=999999999; long value=1; watch.Start(); //測試邏輯 for(int i=0;i<count;i++) { value=((value+1)*count-1)%count; } watch.Stop(); Console.WriteLine("value:"+value); Console.WriteLine("time:"+watch.Elapsed.ToString()); } } }
Xamarin Studio5.10.3 開發的程式名為monotest.exe 檔案大小8KB(8192位元組)
Visual Studio 2013開發的程式名為monotest1.exe 檔案大小5KB(5120位元組)
兩個程式分別在windows和linux虛擬機器上執行5次,執行結果如下:
在windows上執行monotest.exe5次:
在windows上執行monotest1.exe5次
在linux上執行monotest.exe5次
在linux上執行monotest1.exe5次
執行結果統計
從上表可以看出
1、程式執行時間與開發工具相差不大,不管是用Xamarin Studio還是Visual Studio開發的程式在同一環境下執行的時間相差不大。
2、同樣的程式在linux上執行的速度明顯比windows快,本次測試程式在windows上執行時間是linux上的1.4倍。
結論:.Net程式在linux的mono環境上執行效率比在windows上更高。