Hi Scott!
Hello, World! was the subject of Scott’s post detailing the day we met. Well Scott, I don’t think I argued with you much about having a consistent ownership model, but I may have said that garbage collection helps. I was wrong.
I’m sitting here with perfmon open watching my .NET application use between 30-70% of its time in GC. I must assume that the other 30% of the time is spent in malloc. In this case I have no consisten ownership model. Assuming these perf counters are correct I’m allocating ~ 90MB/s, which means i’m deallocating at the same rate and spending nearly half of my time doing this memory management. Ugh. Thanks but no thanks.
I suppose the pro-GC thought behind this is that it is a waste of my precious paid developer time to further optimize this situation. After all, the other 20%-50% of the cycles are spent actually doing what the program is supposed to do, so why spend $$$ on making it run faster? IMO, It is this attitude that gives us all the slow software we have today. You unbox your super fast 1.0THz Intel/AMD Hybrid 512bit CPU with 1PBytes RAM and it still takes 5 minutes to boot and 90 seconds to load java when you browse to a webpage with an applet. I’m not much of a pedant, but the little part of my that is, won’t let me not optimize this a bit.
Thanks Scott. I’m now thinking about memory management in my managed memory apps. My productivity may slow down at first while I add this to my list of things to think about, but I’m sure It will be second nature soon enough. If it comes back like riding a bike, I’ll be semi-pro just like when I used to write C code.
The .Net GC is quite horrible compared to the Java GC, so that doesn’t help much. Maybe MS will make it better in .Net 2?