最近研究了一下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次:

在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上更高。

.Net程序在linux mono环境和WindowsServer上执行测试对比的更多相关文章

  1. java程序在没有java环境的电脑上执行的方法(关键词jar,exe)

    可以让你写的java程序在别人没有任何java配置以及环境的情况下执行 写好程序 在程序对应的package上右键->export->java->Runnable JAR file- ...

  2. Linux下几种常见压缩方式测试对比

    目录 Linux下几种常见压缩方式测试对比 参考 简介 测试 总结 Linux下几种常见压缩方式测试对比

  3. Linux中环境变量中文件执行顺序

        Linux 的变量可分为两类:环境变量和本地变量   环境变量:或者称为全局变量,存在于所有的shell 中,在你登陆系统的时候就已经有了相应的系统定义的环境变量了.Linux 的环境变量具有 ...

  4. Linux Cluster环境下批量分发执行补丁

    转自:http://blog.csdn.net/napolunyishi/article/details/18219867 这两天做了一个需求,因为上一个版本的/tmp空间默认只分配了5G,而升级程序 ...

  5. Android应用程序访问linux驱动第一步:实现并测试Linux驱动

    一直都想亲自做一次使用android应用程序访问Linux内核驱动的尝试,但总是没能做到.最近抽出时间,下决心重新尝试一次.尝试的开始当然是先写一个Linux内核驱动了. 我希望写一个简单测驱动程序, ...

  6. 基于AM3352/AM3354/AM3358/AM3359的Linux 开发环境搭建(上)

    遇到不少人新手小白问,前辈如何搭建一个优良的Linux 开发环境?之前一直都是在用win开发,现在想要尝试用Linux做开发等等一系列的问题.开源一直是给电子行业工作者提供了一种向技术更深处进发的机遇 ...

  7. python程序如何脱离ide而在操作系统上执行

    IDE就像一个婴儿的摇篮,当程序开发好了之后,打包成一个在OS运行的软件,这是算法落地的重要一步.如果只能在IDE上运行,那这个软件有什么意义呢?接下来我就得想办法,把我的程序迁移到win操作系统上执 ...

  8. C#在Linux+Mono环境中使用微信支付证书

    最近特殊的需求,要把微信平台一个功能页面部署到Linux(CentOS6.5)下,其中涉及到微信支付退款. 鉴于之前实践过mono+jexus+asp.net mvc的部署,于是问题重点在于解决对商户 ...

  9. 发布ASP.NET Core程序到Linux生产环境

    原文翻译:Publish to a Linux Production Environment 作者:Sourabh Shirhatti 在这篇文章里我们将介绍如何在 Ubuntu 14.04 Serv ...

随机推荐

  1. HashSet HashTable 与 TreeSet

    HashSet<T>类 HashSet<T>类主要是设计用来做高性能集运算的,例如对两个集合求交集.并集.差集等.集合中包含一组不重复出现且无特性顺序的元素. HashSet& ...

  2. Linux CentOS 配置Tomcat环境

    一.下载Tomcat 下载Tomcat方式也有两种,可以参考我的前一篇博文Linux CentOS配置JDK环境,这边就不再赘述. 二.在Linux处理Tomcat包 1.创建tomcat文件夹 mk ...

  3. C# 利用性能计数器监控网络状态

    本例是利用C#中的性能计数器(PerformanceCounter)监控网络的状态.并能够直观的展现出来 涉及到的知识点: PerformanceCounter,表示 Windows NT 性能计数器 ...

  4. Android性能优化之巧用软引用与弱引用优化内存使用

    前言: 从事Android开发的同学都知道移动设备的内存使用是非常敏感的话题,今天我们来看下如何使用软引用与弱引用来优化内存使用.下面来理解几个概念. 1.StrongReference(强引用) 强 ...

  5. SQL Server-聚焦APPLY运算符(二十七)

    前言 其实有些新的特性在SQL Server早就已经出现过,但是若非系统的去学习数据库你会发现在实际项目中别人的SQL其实是比较复杂的,其实利用新的SQL Server语法会更加方便和简洁,从本节开始 ...

  6. Linux学习之探索文件系统

    Linux,一起学习进步-    ls With it, we can see directory contents and determine a variety of important file ...

  7. spring源码分析之<context:property-placeholder/>和<property-override/>

    在一个spring xml配置文件中,NamespaceHandler是DefaultBeanDefinitionDocumentReader用来处理自定义命名空间的基础接口.其层次结构如下: < ...

  8. CSS 3 学习——transform 3D转换渲染

    以下内容根据官方规范翻译,没有翻译关于SVG变换的内容和关于矩阵计算的内容. 一般情况下,元素在一个无景深无立体感的平面(flat plane)上渲染,这个平面就是其包含块所处的平面.同时,页面上的其 ...

  9. 异步 HttpContext.Current 为空null 另一种解决方法

    1.场景 在导入通讯录过程中,把导入的失败.成功的号码数进行统计,然后保存到session中,客户端通过轮询显示状态. 在实现过程中,使用的async调用方法,出现HttpContext.Curren ...

  10. HIVE教程

    完整PDF下载:<HIVE简明教程> 前言 Hive是对于数据仓库进行管理和分析的工具.但是不要被“数据仓库”这个词所吓倒,数据仓库是很复杂的东西,但是如果你会SQL,就会发现Hive是那 ...