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

 

posted on 2016-03-30 13:45  一切随缘  阅读(2097)  评论(0编辑  收藏  举报