最近研究了一下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上更高。