.Net程序在linux mono环境和WindowsServer上执行测试对比

时间:2022-05-10 22:06:02

最近研究了一下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=; long value=; watch.Start(); //测试逻辑
for(int i=;i<count;i++)
{
value=((value+)*count-)%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次:

.Net程序在linux mono环境和WindowsServer上执行测试对比

在windows上执行monotest1.exe5次

.Net程序在linux mono环境和WindowsServer上执行测试对比

在linux上执行monotest.exe5次

.Net程序在linux mono环境和WindowsServer上执行测试对比

在linux上执行monotest1.exe5次

.Net程序在linux mono环境和WindowsServer上执行测试对比

执行结果统计

.Net程序在linux mono环境和WindowsServer上执行测试对比

从上表可以看出

1、程序执行时间与开发工具相差不大,不管是用Xamarin Studio还是Visual Studio开发的程序在同一环境下执行的时间相差不大。

2、同样的程序在linux上执行的速度明显比windows快,本次测试程序在windows上执行时间是linux上的1.4倍。

结论:.Net程序在linux的mono环境上执行效率比在windows上更高。