Mono 3.8发布:性能进一步改进,可伸缩性提升

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发布:性能进一步改进,可伸缩性提升

时间: 2024-08-06 21:23:10

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

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

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

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

第10章 避免活跃性危险 10.1 死锁 -10.1.1 锁顺序死锁 最简单的一种死锁形式: -10.1.2 动态的锁顺序死锁 可以通过下面的方法来解决: -10.1.3 在协作对象之间发生死锁 -10.1.4 开放调用 如果在调用某个方法时不需要持有锁,那么这种调用就被称为开放调用. -10.1.5 资源死锁 当多个线程在相同资源上等待时,也会发生死锁. 10.2 死锁的避免与诊断 -10.2.1 支持定时的锁 显示使用Lock类中的定时tryLock功能(见13章)来代替内置锁机制. -10

Java 并发编程之性能和可伸缩性

对性能的思考 对于一个给定的操作,通常会缺乏某一种特定的资源限制它的性能,就像常说的短板理论,比如CPU时钟周期.内存.网络带宽.I/O带宽.数据库请求(这个应该是现在高并发的一个瓶颈).磁盘空间等等.当操作因为某种资源而受到限制时,我们就以资源+"密集型"命名这个操作,如CPU密集型,数据库密集型.. 相对于单线程来说,多线程在多个CPU存在时,能更好的发挥它的优势,不过如果是单核的情况下会花费更多的开销,比如.线程之间的协调,增加的上下文切换.线程的创建和销毁.以及线程的调度.如果

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

造成开销的操作包括: 1. 线程之间的协调(例如:锁.触发信号以及内存同步等) 2. 增加的上下文切换 3. 线程的创建和销毁 4. 线程的调度 一.对性能的思考 1 性能与可伸缩性 运行速度涉及以下两个指标: 某个指定的任务单元需要"多快"才能处理完成.计算资源一定的情况下,能完成"多少"工作. 可伸缩性: 当增加计算资源时(例如:CPU.内存.存储容器或I/O带宽),程序的吞吐量或者处理能力能相应地增加. 2 评估各种性能权衡因素 避免不成熟的优化.首先使程序正

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

性能与可伸缩性 一.Amdahl定律 1.问题和资源的关系 在某些问题中,资源越多解决速度越快:而有些问题则相反: 注意:每个程序中必然有串行的部分,而合理的分析出串行和并行的部分对程序的影响极大:串行部分占比和多核执行效率之间是指数级别的关系 2.ConcurrentLinkedQueue 在多核环境中,这个线程安全的队列比通过synchronizedList生成的队列速度要快很多 可以说:concurrent中提供的类,比通过方法生成的线程安全类速度要快 二.线程开销 由于多线程有开销:所以

百万级高并发MongoDB集群性能数十倍提升优化实践(上篇)

1. 背景 线上某集群峰值TPS超过100万/秒左右(主要为写流量,读流量很低),峰值tps几乎已经到达集群上限,同时平均时延也超过100ms,随着读写流量的进一步增加,时延抖动严重影响业务可用性.该集群采用mongodb天然的分片模式架构,数据均衡的分布于各个分片中,添加片键启用分片功能后实现完美的负载均衡.集群每个节点流量监控如下图所示: 从上图可以看出集群流量比较大,峰值已经突破120万/秒,其中delete过期删除的流量不算在总流量里面(delete由主触发删除,但是主上面不会显示,只会

Mono 4.0 发布,开源跨平台 .Net 框架

快速使用Romanysoft LAB的技术实现 HTML 开发Mac OS App,并销售到苹果应用商店中. <HTML开发Mac OS App 视频教程> 土豆网同步更新:http://www.tudou.com/plcover/VHNh6ZopQ4E/ 百度网盘同步:http://pan.baidu.com/s/1jG1Q58M 分享  [中文纪录片]互联网时代   http://pan.baidu.com/s/1qWkJfcS 官方QQ群:(申请加入,说是我推荐的) App实践出真知 4

CSS选择器 - 性能的探究及提升

[本博客为原创:http://www.cnblogs.com/HeavenBin/]  前言: 在工作中编写CSS样式表时随着选择器层数的增加总会看到选择器又丑又长的情况,利用工作之余研究从其命名再到如何提高其性能.本博客将以"通俗易懂"."简洁""的方式来探究CSS选择器的性能,以及叙述总结如何提升CSS选择器的性能.(2017-8-20) 一. CSS选择器性能是如何消耗的? 工作原理:浏览器利用CSS选择器来匹配文档元素. 工作流程:例如 #hd .

微软Ignite 2019 大会:发布更加智能安全,提升工作效率的办公服务

Blog 地址:https://blog.51cto.com/13969817 2019年11月4日,美国,奥兰多,微软年度IT盛会正式拉开帷幕,来自世界各地的IT精英共同见证了微软推出的智能安全工具和服务. 微软作为引领全球云端生产力的领导者,发挥了很大的作用,推出的人工智能可以以个性化的生产力体验.帮助人们查找和收集信息,智能地实现了协作办公的创新. 微软希望将 AI 注入到每一个体验中,这意味着使 PowerPoint 演示文稿更高效,Excel 中的数据更易于操作,视频更易于搜索,流/电