What’s in NetFX 3.5 SP1?


Long time, no blog.


 


Since the NetFX 3.5 Service Pack is available, now, I figured I’d put up a quick rundown of what we (the CLR CodeGen team) contributed to the package.  I’m not going into nitty-gritty details, but just to give you an idea of what’s in it, and perhaps inspire you to go install it.  A quick note:  Unless otherwise noted, all changes impact both x86 & x64.


 


NGen infrastructure rewrite:  the new infrastructure uses less memory, produces less fragmented NGen images with much better locality, and does so in dramatically less time.  What this means to you:  Installing or servicing an NGen image is much faster, and cold startup time of your NGen’ed code is better.


 


Framework Startup Performance Improvements:  The framework is now better optimized for startup.  We’ve tweaked the framework to consider more scenarios for startup, and now layout both code & data in the framework’s NGen images more optimally.  What this means to you:  Even your JIT code starts faster!


 


Better OS citizenship:  We’ve modified NGen to produce images that are ASLR capable, in an effort to decrease potential security attack surface area.  We’ve also started generating stacks that are always walkable using EBP-chaining for x86.  What this means to you:  Stack traces are more consistent, and NGen images aren’t as easily used to attack the system.


 


Better 32-bit code quality:  The x86 JIT has dramatically improved inlining heuristics that result in generally better code quality, and, in particular, much lower “cost of abstraction”.  If you want to author a data type that only manipulates a single integer, you can wrap the thing in a struct, and expect similar performance to code that explicitly uses an integer.  There have also been some improvements to the ‘assertion propagation’ portion of the JIT, which means better null/range check elimination, as well as better constant propagation, and slight better ‘smarts’ in the JIT optimizer, overall.  What this means to you:  Your managed code should run slightly faster (and sometimes dramatically faster!).  Note to 64 bit junkies:  We’re working on getting x64 there, too.  The work just wasn’t quite there in time.


 


Anyway, go forth & download!


 


-Kev


Comments (4)

  1. Tanveer Badar says:

    About this line: ‘The x86 JIT has dramatically improved inlining heuristics that result in generally better code quality, and, in particular, much lower “cost of abstraction”’.

    Do you mean to say this "no-inlining-functions-having-valuetype-parameters-issue" has been fixed, or somehow has a lesser impact in .netfx 3.5 sp1 (big name!) CLR?

  2. alexey_r says:

    Badar: it is described at the "inlining heuristics" link.

    "wrap the thing in a struct, expect similar performance to code that explicitly uses an integer"

    So far as it isn’t a class field, right (based on your last post)? Or has this changed?

  3. Below is a list of all the sweet improvements made to the .NET Framework 3.5 Service Pack 1 since the

  4. 【原文地址】 CLR Updates in .NET Framework 3.5 SP1 【原文发表日期】 19 August 08 07:57 Kevin Frie ,CLR核心部分的开发主管最近发布了一篇帖子