Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ


Choose your language

InfoQ Homepage News Mono Gets Further Performance, Scalability Improvements

Mono Gets Further Performance, Scalability Improvements

Mono 3.8.0 was released last week. It comes with several performance and scalability improvements across the runtime, as well as finishes the Windows port.

Mono follows Gnome and Linux Kernel versioning policies, which means 3.8 is the next major stable version after 3.6 (which was released just last month). It comes with several performance improvements -

  • JIT better handles long remainders by powers of two, generating significantly better code. Long remainders were not handled specially earlier, like Int remainders were. (Generally, multiplication/division by powers of two are replaced by shift operators as a compiler-optimization)
  • Faster code for delegates that are invoked only once - especially helps C# features which use delegates under-the-cover, such as async and LINQ
  • Runtime gets a new, concurrently readable hashtable, allowing reflection heavy workloads to scale beyond single CPU
  • GC time reduced by 5-10%

The community is especially excited by continued performance improvements from Mono, release after release. Richard Simpson summarizes it -

Seriously impressive release by the Mono Team. Biggest knock I hear against Mono is performance.

The version also sees several debugging improvemens, especially for USB Debugging. Considering cross-platform, mobile development is a major use-case for mono, this is a welcome improvement. The debugging wire-protocol now handles high latency connections better. The client library also caches a lot more aggressively. This reduces number of packets transferred, thereby reducing debugging latency. This dual change promises a much better debugging experience when using Xamarin tools for cross-platform mobile development. 

Apart from this, there are several bug fixes, across the Runtime, the Class libraries, the C# compiler, MSBuild and the Debugger - overall improving stability, as well as performance. You can see the release notes for a full list of changes.

Mono 3.6 was not available for all platforms, especially Windows, and non-Debian Linux variants. This release, on the other hand, is available for more Linux variants. The release notes mentions that the port to Windows 64 is also complete. However, the windows installer is still not available on the mono website and you will have to build from sources to get the latest binaries for Windows.

Mono, sponsored by Xamarin, is an open source implementation of Microsoft's .NET framework. It especially makes cross-platform development possible using C#, F# and other .NET languages. Xamarin builds cross-platform development tools on top of mono, as well as framework products such as Xamarin.Forms (which help create native experiences with cross-platform code). Both of these have seen consistent adoption from developers (Xamarin recently raised $54 million in Series C funding to continue building on this). The company has also been working with Microsoft to improve the compatability story between .NET and Mono. The ASP.NET vNext effort (especially the KRuntime) is one result of this collaboration; it can work well with both .NET and Mono runtimes.

Rate this Article