Writing A Technical Article, Pt. 3: Research Begins...
I'm not one of those people for whom the task of composition is a somewhat mechanical extension of increasingly detailed outlines. Nonetheless, research consumes between 80-90% of the time I spend on a technical article (note I said time and not effort -- subjectively, writing text is two or three times harder than writing C++. You can satisfy a compiler.)
In this case, research will consist of:
- Integrating CodeAnalyst and Eclipse
- Profiling a simple application
- Implementing an image-processing application
- Profiling it to discover a performance problem
- Investigating that problem with CodeAnalyst
- Ameliorating it
- Evaluating the performance "win"
- If not "big enough" go to 3
In this case, my target sample application has two algorithms that I think will be difficult:
- Seam-discovery (CPU intensive)
- Seam-removal (Memory-manipulation intensive)
With seam-discovery, I know that even if I implement a known-good algorithm (such as graph-cuts), I am guaranteed to peg the CPUs. My big gamble professionally is that I'm a good enough programmer to find a Step 6 "win" that I can pull off in a reasonable amount of time. A safer bet would be to choose an algorithm that would have performance problems if intentionally implemented in a naive manner (for instance, a filter that just iterated across rows and columns and, at each pixel, retrieved the neighboring pixels and averaged them. Pretty easy to tune that up!)
Now, a confession. By the time you read this, I've been somewhere not-Hawai'i for a week or so. I'll carry print outs of this paper on content-aware image resizing and \<a href="http://www.knowing.net/ct.ashx%3fid%3d383b9b44-afcb-4ac0-8162-10c966778c25%26url%3dhttp%253a%252f%252fwww.cs.cornell.edu%252frdz%252fPapers%252fBVZ-iccv99.pdf"" target="_blank" rel="noopener noreferrer">this paper on graph-cuts and study them on the plane tomorrow. I'll have my laptop with me and may noodle around with source code, but it's far more likely that I'll be working with pen and paper to see if I can "get" the algorithm intuitively. Other than that, I'm going to do my darnedest not to spend too much time thinking about computers.
Coming September 19th or thereabouts: Part 4, Research Gets Underway...