9月4日,Mono 3.8.0发布了。该版本的运行时带来了一些性能和可伸缩性方面的改进,同时完成了向Windows平台的移植。

Mono遵循Gnome和Linux内核的版本编号策略,这意味着3.8是3.6(已于上个月发布)之后的一个主要的稳定版本。该版本在性能方面有所改进:

  • JIT可以更好地处理除数为2的幂的long型的取余操作,生成的代码效果好很多。之前long型的取余操作不会像int类型那样特殊处理。(作为一种编译优化,通常2的幂的乘除运算会替换为移位操作。)
  • 对于只调用一次的委托,可以生成更快的代码。这对于诸如asyncLINQ等底层使用了委托的C#特性帮助很大。
  • 运行时有了一个新的可以并发读的hashtable,有助于提升可伸缩性。
  • GC时间减少了5-10%。

社区对于Mono一个版本接一个版本的持续性能改进非常兴奋。Richard Simpson总结到

Mono团队发布的版本真是让人印象深刻。Mono最让我震动的就是性能了。

该版本在调试方面也有些改进,尤其是USB调试。考虑到跨平台移动开发是Mono的一个主要使用场景,这一改进很受欢迎。调试有线协议(wire-protocol)现在可以更好地处理高延迟情况。客户端库也会激进地缓存更多信息。这会减少需要转移的包的数量,进而减少调试延迟。在使用Xamarin工具进行跨平台移动开发时,这双重变化会带来更好的调试体验。

除此之外,还有很多Bug修复,涉及运行时、类库、C#编译器、MSBuild和调试器,整体上改进了稳定性和性能。发布说明详细列出了所有修改,感兴趣的读者可以参阅。

Mono 3.6并不支持所有平台,特别是Windows和非Debian的Linux变种。Mono 3.8则支持更多Linux变种。发布说明中提到,向Windows 64的移植也已经完成。不过Mono网站上尚未提供Windows平台的安装程序,我们必须从源代码构建出最新的二进制文件

MonoXamarin资助的一个项目,是微软的.NET框架的开源实现。它使得使用C#、F#和其他.NET语言进行跨平台开发成为可能。Xamarin在Mono之上构建了跨平台开发工具以及像Xamarin.Forms(可以使用跨平台代码辅助创建原生的体验)这样的框架产品。开发工具和框架在开发者之间都有应用(Xamarin最近获得了5400万美元C轮融资,会继续在这方面发力)。Xamarin也已经在和微软开展合作,以改进.NET和Mono之间的兼容性。ASP.NET vNext(尤其是KRuntime)就是这一合作的成果之一;它在.NET和Mono运行时上都能很好地运行。

查看英文原文:Mono Gets Further Performance, Scalability Improvements

查看中文原文: Mono 3.8发布:性能进一步改进,可伸缩性提升

Mono 3.8发布:性能进一步改进,可伸缩性提升的更多相关文章

  1. mono 3.10.0 正式发布:性能进一步改进

    Mono是Xamarin资助的一个项目,是微软的.NET框架的开源实现.它使得使用C#.F#和其他.NET语言进行跨平台开发成为可能.Xamarin在Mono之上构建了跨平台开发工具以及像Xamari ...

  2. 《java并发编程实战》读书笔记8--死锁,性能与可伸缩性,锁粒度锁分解锁分段

    第10章 避免活跃性危险 10.1 死锁 -10.1.1 锁顺序死锁 最简单的一种死锁形式: -10.1.2 动态的锁顺序死锁 可以通过下面的方法来解决: -10.1.3 在协作对象之间发生死锁 -1 ...

  3. 《Java并发编程实战》第十一章 性能与可伸缩性 读书笔记

    造成开销的操作包含: 1. 线程之间的协调(比如:锁.触发信号以及内存同步等) 2. 添加�的上下文切换 3. 线程的创建和销毁 4. 线程的调度 一.对性能的思考 1 性能与可伸缩性 执行速度涉及下 ...

  4. java并发基础(六)--- 活跃性、性能与可伸缩性

    <java并发编程实战>的第9章主要介绍GUI编程,在实际开发中实在很少见到,所以这一章的笔记暂时先放一放,从第10章开始到第12章是第三部分,也就是活跃性.性能.与测试,这部分的知识偏理 ...

  5. java并发编程实战:第十一章----性能和可伸缩性

    线程的最主要目的是提高程序的运行性能,但性能的提升会导致复杂性的提升,又会导致安全性和活跃性的风险 一.对性能的思考 提升性能意味着用更少的资源做更多地事情.要想通过并发来获得更好的性能,就要更有效地 ...

  6. java并发编程(4)性能与可伸缩性

    性能与可伸缩性 一.Amdahl定律 1.问题和资源的关系 在某些问题中,资源越多解决速度越快:而有些问题则相反: 注意:每个程序中必然有串行的部分,而合理的分析出串行和并行的部分对程序的影响极大:串 ...

  7. CDN系统对网站的性能有极大的提升

    CDN系统对网站的性能有极大的提升 打开一个网站 我们只是请求了一个页面.单个页面,实际上所有文件都是一个新的请求.以新浪为例一共发起了35个请求. 这35个请求中.只有一个动态内容.其它均为静态.这 ...

  8. Packt发布了2018年技能提升报告

    2018年技能提升报告Skill Up 2018 - Developer Skills Report | PACKT Bookshttps://www.packtpub.com/skill-up-20 ...

  9. 百万级高并发mongodb集群性能数十倍提升优化实践

    背景 线上某集群峰值TPS超过100万/秒左右(主要为写流量,读流量很低),峰值tps几乎已经到达集群上限,同时平均时延也超过100ms,随着读写流量的进一步增加,时延抖动严重影响业务可用性.该集群采 ...

随机推荐

  1. Tomcat一个BUG造成CLOSE_WAIT

    之前应该提过,我们线上架构整体重新架设了,应用层面使用的是Spring Boot,前段日子因为一些第三方的原因,略有些匆忙的提前开始线上的内测了.然后运维发现了个问题,服务器的HTTPS端口有大量的C ...

  2. Asp.net Core中使用Session

    前言 2017年就这么悄无声息的开始了,2017年对我来说又是特别重要的一年. 元旦放假在家写了个Asp.net Core验证码登录, 做demo的过程中遇到两个小问题,第一是在Asp.net Cor ...

  3. ASP.NET Core的路由[4]:来认识一下实现路由的RouterMiddleware中间件

    虽然ASP.NET Core应用的路由是通过RouterMiddleware这个中间件来完成的,但是具体的路由解析功能都落在指定的Router对象上,不过我们依然有必要以代码实现的角度来介绍一下这个中 ...

  4. SQL Server-聚焦UNIOL ALL/UNION查询(二十三)

    前言 本节我们来看看有关查询中UNION和UNION ALL的问题,简短的内容,深入的理解,Always to review the basics. 初探UNION和UNION ALL 首先我们过一遍 ...

  5. 谈谈一些有趣的CSS题目(八)-- 纯CSS的导航栏Tab切换方案

    开本系列,谈谈一些有趣的 CSS 题目,题目类型天马行空,想到什么说什么,不仅为了拓宽一下解决问题的思路,更涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题 ...

  6. iOS逆向工程之App脱壳

    本篇博客以微信为例,给微信脱壳."砸壳"在iOS逆向工程中是经常做的一件事情,,因为从AppStore直接下载安装的App是加壳的,其实就是经过加密的,这个“砸壳”的过程就是一个解 ...

  7. 9、委托、事件、Lambda

    开始 关于委托,肯定是要有问题的. 第一个问题,委托用来干什么? 看.net中的表述:在.net平台下,委托类型用来定义和相应应用程序中的回调.(回调?处理内存中两个实体双向通信的一种技术.)   第 ...

  8. WebGIS项目中利用mysql控制点库进行千万条数据坐标转换时的分表分区优化方案

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1. 背景 项目中有1000万条历史案卷,为某地方坐标系数据,我们的真实 ...

  9. Log4net - 规则简介

    参考页面: http://www.yuanjiaocheng.net/CSharp/csharprumenshili.html http://www.yuanjiaocheng.net/entity/ ...

  10. JavaScript学习笔记(一)——延迟对象、跨域、模板引擎、弹出层、AJAX示例

    一.AJAX示例 AJAX全称为“Asynchronous JavaScript And XML”(异步JavaScript和XML) 是指一种创建交互式网页应用的开发技术.改善用户体验,实现无刷新效 ...