Compilers Don't Know That
Minimum price
Suggested 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

Authors have earned$9,708,273writing, publishing and selling on Leanpub, earning 80% royalties while saving up to 25 million pounds of CO2 and up to 46,000 trees.

Learn more about writing on Leanpub

The Leanpub 45-day 100% Happiness Guarantee

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

See full terms

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), EPUB (for phones and tablets) and MOBI (for 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. It really is that easy.

Learn more about writing on Leanpub