Source Indexing is Underused Awesomeness
If you’ve ever had to debug code that was not built on your machine – whether looking at crash dumps or debugging live code – then you need source indexing. If you’ve ever wasted time trying to find...
View ArticleA Tale of Two Call Stacks
My kingdom for some symbols I spend a large portion of my time at work trying to make things faster and less crashy. Usually the problems I investigate are in our own code so I have full information –...
View ArticleIncreased Reliability Through More Crashes
Shipping games that don’t crash is hard, and it’s important to use every tool available to try to find bugs. Static code analysis is one technique that I’ve discussed in the past and for some classes...
View ArticleTop Ten Technologies of 2011
It seemed wrong to do a ‘normal’ blog post on December 23rd, and my programming themed “Night Before Christmas” rap medley never quite came together, so instead I’m doing a top-ten list. Well, not...
View ArticleTricks With the Floating-Point Format
Years ago I wrote an article about how to do epsilon floating-point comparisons by using integer comparisons. That article has been quite popular (it is frequently cited, and the code samples have been...
View ArticleStupid Float Tricks
Type Punning is Not a Joke I left the last post with a promise to share an interesting property of the IEEE float format. There are several equivalent ways of stating this property, and here are two of...
View ArticleDon’t Store That in a Float
I promised in my last post to show an example of the importance of knowing how much precision a float has at a particular value. Here goes. As a general rule this type of data that should never be...
View ArticleComparing Floating Point Numbers, 2012 Edition
We’ve finally reached the point in this series that I’ve been waiting for. In this post I am going to share the most crucial piece of floating-point math knowledge that I have. Here it is:...
View ArticleFloat Precision–From Zero to 100+ Digits
How much precision does a float have? It depends on the float, and it depends on what you mean by precision. Typical reasonable answers range from 6-9 decimal digits, but it turns out that you can make...
View ArticleIntermediate Floating-Point Precision
Riddle me this Batman: how much precision are these calculations evaluated at? void MulDouble(double x, double y, double* pResult) { *pResult = x * y; } void MulFloat(float x, float y, float*...
View ArticleFloating-point complexities
Binary floating-point math is complex and subtle. I’ve collected here a few of my favorite oddball facts about floating-point math, based on the articles so far in my floating-point series. The focus...
View ArticleExceptional Floating Point
Floating-point math has an answer for everything, but sometimes that’s not what you want. Sometimes instead of getting an answer to the question sqrt(-1.0) (it’s NaN) it’s better to know that your...
View ArticleXperf Wait Analysis–Finding Idle Time
The Windows Performance Toolkit, also known as xperf, is a powerful (and free!) system-wide Windows profiler. In the past I’ve talked about using xperf to identify slowdowns in PowerPoint by using...
View ArticleThat’s Not Normal–the Performance of Odd Floats
Denormals, NaNs, and infinities round out the set of standard floating-point values, and these important values can sometimes cause performance problems. The good news is, it’s getting better, and...
View ArticleIn Praise of Idleness
“I want to say, in all seriousness, that a great deal of harm is being done in the modern world by belief in the virtuousness of WORK, and that the road to happiness and prosperity lies in an organised...
View ArticleWPA–Xperf Trace Analysis Reimagined
For many years xperfview.exe has been the main tool for analyzing xperf/ETW traces. However starting last fall the Windows Performance Toolkit started including wpa.exe as an alternative. While the...
View ArticleWhen Even Crashing Doesn’t Work
I’ve written previously about the importance of crashing in order to improve code quality. However even the seemingly simple task of crashing can be more error prone than you might expect. I’ve...
View ArticleMore Adventures in Failing to Crash Properly
In last week’s episode we discussed how 32-bit processes on 64-bit Windows might corrupt the exception state after a crash, and how any processes on 64-bit Windows might actually continue running after...
View Article