Development machines

This post is very old. Please bear in mind that information here might be incorrect or obsolete, and links can be broken. If something seems wrong, please feel free to comment or contact me and I'll update the post.

The quest for the perfect developer PC is a long one. So far, I didn’t manage to find a machine at work which is really optimal for development. Let’s take a look at my current one, and the associated problems. It has a dual-dual Xeon at 3.00 GHz, with 8 GiB of RAM – this is no problem, though I would have been more happy with having a dual-quad running at 2.5 GHz. The issue with multithreading is, that either your app is indeed properly multithreaded, and then you can scale to many cores, or it isn’t, in which case you’re better of with a high-clocked dual core.

Ideally, you would have a dual-core running at 3.5 GHz in one socket, and six 2 GHz cores in the other, with some OS support to pin a thread to the “serial” or the “parallel” processor. Actually, it’s my firm believe that we will eventually end up with such architectures, where you have a few large out-of-order cores, and a bunch of simpler in-order-cores, which all support the exactly same instruction set (so from the developer perspective, there is no difference except for speed). Whatever the future architectures will actually look like, for a developer today broad parallelism is a must have.

What’s good is that the machine has 2 GiB of RAM per core, which allows for some heavy-duty computing. The worst you can have is something like 8 cores and 4 GiB of RAM, because for any reasonably parallel application, you’ll be quickly running out of private, that is, per core, memory.

The graphics card is a pretty nice GTX 280. Right now, I’m far away from doing any serious graphics development, and the card is more than sufficient. Just to give you an idea, the scenes I’m drawing consist of 20k triangles or so, and maybe 50 MiB of textures, while the card is able to run Crysis at 1920×1200 with maxed out settings smoothly, pushing something in the order of 1 million polygons per frame. However, for heavy-duty graphics development, I would like to have something in the range of a GTX 295 in it, for two reasons. First of all, you can prototype faster, as you can skip crucial optimizations and get things running quickly. Second, for GPGPU, it’s the same as with the CPU core count for normal multithreading. Having more to see scalability issues early is crucial, especially while developing.

No matter how good the graphics card is, it can be worth nothing without a good screen setup. In my case, I have a 24” and a 20” display on my desktop side-by-side. It’s ok, but I’m not happy with the 24” screen. I have a 22” at home, which is more or less perfect for me, and the pixel density difference between a 22” at 1680×1050 and a 24” at 1920×1200 is pretty small, but I still have problems to put a 24” screen at a distance where I can both read from it without problems, and not getting a headache from it.

The major problem with the screens though is the colour reproduction. The 24” is slightly yellow, while the 20” is more or less neutral. On their own, they would be perfectly fine, but next to each other, it’s simply annoying if you move a window over and the colours change visibly. I may be biased here, having seen Eizo screens. Anyway, a setup with two visibly different screens is nothing I can recommend. If you can, spend the extra money to get screens which reproduce colours truthfully.

What’s the perfect development machine for you? I’m really curious what points are important for you, and what experiences you have made. I haven’t touched topics like fast hard disks, because I’ve yet to see a machine which fast enough drives to make a difference, so I’m really interested in your opinion here. Feel free to comment!

[Update] Just found something on SSDs for compiling, on “Joel on Software” — doesn’t look too promising. Makes me wonder whether a fast disk drive makes any difference at all, if you have plenty of RAM. Anyway, I’m surprised, because compiling seem to be a task which stresses small random reads/writes the most, which looks like a perfect match for SSDs.

This entry was posted in Programming and tagged . Bookmark the permalink.

2 Responses to Development machines

  1. Johannes says:

    While you digging on “perfect” hardware I’m insisting more on a pleasant environment.
    I need good music – to which I can listen without disturbing other people. I want a big desk. There must be enough space to place two monitors, some papers, one flower, my coffeecup and some food! I need some kind of “creative chaos” on my desk!
    And I think I don’t need to mention, that an extremly good chair is needed. You know mine.

    In such a proper environment I get the best ideas to solve my problems. If it take one second more to compile – who cares?!

  2. Anteru says:

    Yeah, well, the ergonomics are really important, which I missed in my post. A good keyboard, a nice chair, proper desk height etc. should not be underestimated, as the fastest machine does not help if you cannot type.

    However, this is rather subjective, and that’s why I focused more on the hardware. It’s difficult to assess how “good” an environment is, isn’t it?

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>