Compilers Don't Know That
With Membership
Minimum paid price

Compilers Don't Know That

Ersatz Report On Regaining .NET Application Performance

About the Book

.NET is a fantastic platform to lose performance. It has a nice set of high-level languages, powerful standard library and lots of useful assemblies available. Its runtime is so good you don't have to worry about effectiveness most of the time. You just build your application one layer of abstraction over another until it's ready. Of course, every layer eats up a bit of performance, but it's a fair trade-off: you sure loose some machine cycles here and there, but you win in productivity because of a high-level environment. 

Yet once in a while, you may run into a situation, when you do have to worry about performance. For me, it was with the image processing application I wrote in 2013. It was working fine with my own test pictures, which were relatively small. But the very first real world user tried to process a 10 000 x 20 000 px page scan with it and the whole thing just hanged. It was working well, but as the processing took over several minutes, it was considered not responding and forced to quit. 

Usually, it's the algorithm. Algorithmic improvements can be the most drastic, but I knew from my experience, that the mathematical model behind the product was hardly an issue. It is nothing more a light-weight polynomial model combined with a simple affine transformation. So the problem had to be in the environment. Somehow trivial tasks appeared to be much more time consuming than they look. 

To peek inside these seemingly trivial things, I had to use disassembler. I took ILDasm for getting intermediate language assembly code and a Visual Studio built-in disassembler for the machine-level code. This way I learned quite a lot about how .NET works including C# compilation, just-in-time compilation, library data types and methods. The experience obtained helped me make the tightest parts of my code up to 100 times faster. A huge gain.  

Now I want to share this experience with you.

About the Author

Olexandr Kaleniuk
Olexandr Kaleniuk

I am a Ukrainian software engineer with Ph.D. in applied geometry and ten years of programming experience. My job is to fit beautiful mathematical concepts into the harsh reality of computational machinery.

Table of Contents

  • Preface
    • Special Thanks
    • Technicalities
  • Accessing Properties
    • Properties
    • Fields
    • Local Variables and Constants
    • Summary
  • Reading From Bitmap
    • Designated Method
    • Working With Data Copy
    • Direct Data Access
    • Summary
  • Image Transformation
    • A Bit of Projective Geometry
    • A Bit of Linear Algebra
    • Implementation
    • Reimplementation
    • Summary
  • Matrix Inversion
    • Standard Library Method
    • Mathematics Behind Inverse Matrix Computation
    • Reimplementation
    • Summary
  • Plain Calls And Delegates
    • Plain Calls
    • Delegates
    • Summary
  • Compiler Optimizations
    • Examples
    • Summary
  • Appendix A. Motivational talk
  • Appendix B. How to Read x86/x64 Disassembler Output
    • Structure of Disassembly
    • Data Types
    • Registers
    • Calling Procedure
    • Branching AKA ifs fors and whiles
    • Computation
    • Conclusion and Further Reading
  • References

The Leanpub 60 Day 100% Happiness Guarantee

Within 60 days of purchase you can get a 100% refund on any Leanpub purchase, in two clicks.

Now, this is technically risky for us, since you'll have the book or course files either way. But we're so confident in our products and services, and in our authors and readers, that we're happy to offer a full money back guarantee for everything we sell.

You can only find out how good something is by trying it, and because of our 100% money back guarantee there's literally no risk to do so!

So, there's no reason not to click the Add to Cart button, is there?

See full terms...

80% Royalties. Earn $16 on a $20 book.

We pay 80% royalties. That's not a typo: you earn $16 on a $20 sale. If we sell 5000 non-refunded copies of your book or course for $20, you'll earn $80,000.

(Yes, some authors have already earned much more than that on Leanpub.)

In fact, authors have earnedover $13 millionwriting, publishing and selling on Leanpub.

Learn more about writing on Leanpub

Free Updates. DRM Free.

If you buy a Leanpub book, you get free updates for as long as the author updates the book! Many authors use Leanpub to publish their books in-progress, while they are writing them. All readers get free updates, regardless of when they bought the book or how much they paid (including free).

Most Leanpub books are available in PDF (for computers) and EPUB (for phones, tablets and Kindle). The formats that a book includes are shown at the top right corner of this page.

Finally, Leanpub books don't have any DRM copy-protection nonsense, so you can easily read them on any supported device.

Learn more about Leanpub's ebook formats and where to read them

Write and Publish on Leanpub

You can use Leanpub to easily write, publish and sell in-progress and completed ebooks and online courses!

Leanpub is a powerful platform for serious authors, combining a simple, elegant writing and publishing workflow with a store focused on selling in-progress ebooks.

Leanpub is a magical typewriter for authors: just write in plain text, and to publish your ebook, just click a button. (Or, if you are producing your ebook your own way, you can even upload your own PDF and/or EPUB files and then publish with one click!) It really is that easy.

Learn more about writing on Leanpub