Efficiently sorting gigabytes: the Deferred Merge Sort
At Superluminal we’re dealing with massive files that may contain unsorted data. This post explains how we stream and sort these huge capture files in one pass.
At Superluminal we’re dealing with massive files that may contain unsorted data. This post explains how we stream and sort these huge capture files in one pass.
In Superluminal we need to store potentially millions of callstacks very efficiently. This article describes how we went from naive storage taking up gigabytes of memory in the worst case, to a very compact data structure that efficiently compresses and stores large amounts of stack data in a fraction of the memory.
This is part three in the series on 16x AA font rendering using coverage masks, as used in our profiler. In part one, we saw how to render glyphs in real-time using 16xAA, sampled at a regular grid. In part two, we saw how to move to a rotated grid and how the code could …
This is part two in the series on 16x AA font rendering using coverage masks, as used in our profiler. In part one, we saw how to render glyphs in real-time using 16xAA, sampled at a regular grid. In this part (part two), we will see how we can move to a rotated grid and …
Back when we started our Performance profiler, we knew we were going to do almost all the rendering of the UI ourselves. We soon had to decide how we were going to approach font rendering. We had a few requirements: We should be able to render any font on any size in real-time to ensure …