I have seen several articles on performance recently and I thought I'd post a of them and maybe a note or two about each:
Paul Wilson published a great one. This focused on memory management on a server. I have dealt with this stuff a fair amount and it is a serious issue. This general problem deserves more attention.
Ben and Miguel at mono recently published an article on the topic of profiling. They discuss it with the mono profiler, but the concept is the same. After seeing the simple output of the mono profiler and how easy it is to run, a simple light tool for Windows.NET might make some sense. I think I'd run a profiler more often if it didn't seem to be such a hassle. Just glancing at some results in Edit+ would suit me fine some times.
Ben recently posted an experience that shows how important GetHashCode() is in performance. When you think using a hashtable is the "perf" thing to do, make sure that your hash functions are "perfy" too.
Duncan points out a nice link to Rico Mariani's talk. Duncan makes some comments related to items mentioned in other articles in this list. One about enumerators/foreeach (see Miguel & Ben's article above) and doing some measurements "if I have time for that" (see Paul's below). Some of the points from Rico's talk: Measure performance often, and set goals for your results. Know the cost of external components you're using (don't use XML for everything). Watch for OOPahalism. Keep structures and logic as simple as possible. Nested foreach is bad. One new feature that few people use can slow existing features that many people use. Hash functions and comparison functions need to be fast.
James Averypoints out NPerf, it looks like a helpful tool for iterative performance testing (think NUnit).
Everyone has already blogged about Paul Vick's article on The 10 Rules of performance. Paul's article is nice in that he doesn't focus too much on the coding details and focuses on the development process and team's mindset. He points out that since developers are "behind the eight-ball" they aren't constantly checking the status of performance. Eric Gunnerson pointed out Appweak recently and I think something like this might be another good way for the developers to get back in touch with performance... Especially if they do Appweak on a machine that doesn't have a 3Ghz processor, RAID0 SATA drives and 2GB of ram for a workstation ;).
posted @ Monday, February 16, 2004 9:38 PM