Making .NET Applications Faster: My Pluralsight Courses

November 14, 2014

8 comments

I can’t believe I waited until now to blog about it, but I have two courses on Pluralsight covering .NET performance optimization. If you’ve been reading this blog for any time now, you know this is one of my favorite topics — and I was absolutely thrilled to join the Pluralsight author team in early 2014.

My first course is titled Making .NET Applications Faster, and it was released in May. It’s a fairly short course, running just under 2 hours, that covers the basics of .NET performance optimization. Some of my favorite topics include implementing value types correctly, using NGen and ILMerge, applying pointer tricks in C#, and parallelizing code with the TPL. No performance optimization course is complete without demos, and I’ve done my best to illustrate the specific optimizations with simple applications that drive the point home. For example, you’ll see me speed up the warm startup time of RavenDB using RyuJIT, or make a collection lookup 10x faster by using a clever custom collection.

My second course, Making .NET Applications Even Faster, was released just a few days ago. It’s longer than the first one — just over 3 hours, and it covers more advanced topics. The first two modules, which describe the .NET garbage collector in depth and explain how to measure and improve GC performance, are some of my favorites. But I also enjoyed describing vectorization: the 4-8x speedup potential is incredible, and there are a few algorithms that you can see me parallelize in real-time. Another set of demos I love is around low-level CPU optimizations that have to do with caches, pipelining, and even store-to-load forwarding stalls. Intel VTune Amplifier helps immensely to detect these issues and produces clear guidelines for improvement.

Modern CPU cache organization / diagram from my Pluralsight course

My next Pluralsight course — it’s not a secret! — is going to cover performance measurement. I intend to cover lots of tools and techniques for accurately measuring and reporting performance, including free tools that you can use in development and production environments. ETW is going to be a key part of this course: it has positioned itself as the most reliable and powerful way to measure performance on Windows.

If you have any questions or feedback on my courses, please feel free to comment here or use the discussions area on the Pluralsight website. Thanks for watching, and I hope you’re having fun!


I am posting short links and updates on Twitter as well as on this blog. You can follow me: @goldshtn

Add comment
facebook linkedin twitter email

Leave a Reply to Matt Warren Cancel Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

8 comments

  1. Matt WarrenNovember 14, 2014 ב 5:42 PM

    Just out of interest, can you share why (or how) RyuJIT made RavenDB start-up faster?

    What made the difference?

    Reply
    1. Sasha Goldshtein
      Sasha GoldshteinNovember 17, 2014 ב 7:31 AM

      RyuJIT usually has better throughput than the old JIT. It doesn’t always produce higher-quality code, but it almost always produces it faster. RavenDB is a pretty big product that has a lot of stuff happening during startup, so RyuJIT was able to speed it up nicely.

      Reply
      1. Matt WarrenNovember 17, 2014 ב 1:40 PM

        Thanks for the reply, that’s good to know.

        I assume that they’ll make sure RyuJIT produces code that is comparable with the JIT by the time it’s released.

        Reply
        1. Matt WarrenNovember 17, 2014 ב 1:41 PM

          I meant “..by the time it’s a full (non-CTP) release”

          Reply
        2. Sasha Goldshtein
          Sasha GoldshteinNovember 17, 2014 ב 6:43 PM

          It’s usually comparable quality, and in many cases better. But I’ve seen regressions as well in the CTPs, so I’m still being careful 🙂

          Reply
  2. GSNovember 17, 2014 ב 6:25 PM

    Why this training released on paid website instead of Microsoft academy website where I think this topics belongs to.

    Reply
    1. Sasha Goldshtein
      Sasha GoldshteinNovember 17, 2014 ב 6:42 PM

      Um, because Pluralsight is an incredible source of knowledge with hundreds of courses covering Microsoft technologies, representing thousands of author man-hours invested in creating this content? Are you still surprised this isn’t released for free?

      Reply
  3. VarunNovember 18, 2014 ב 10:06 AM

    Hi Sasha – I have asked some questions under the discussions section of your new pluralsight course – Making .NET Applications Even Faster. Please have a look when you are free. Thanks.

    Reply