I just bought a new 2010 15" Macbook Pro and put in a solid state drive - OWC Mercury Extreme Pro SSD 240GB. It's to replace my 2007 macbook used all the time for iPhone development with Xcode. I picked the hi-res antiglare screen (1680 x 1050). The OWC SSD is a new Sandforce based model that is reported to not suffer from the precipitous drop in write performance common to many SSDs on the market. (I also considered using a Seagate Momentus hybrid drive.) Benefits of the new machine include:
- Faster CPUs and hyperthreading, so CPU bound Xcode builds gets to run 4 parallel compiles at the same time for a big speed boost.
- The SSD has blazing random access times thus speeding up all general use of the machine, including the compile-deploy-test cycle with Xcode and the iPhone simulator.
- More screen space makes it easier to work with Xcode and the iPhone & iPad simulator on the road.
- The machine can better keep up with demanding Instruments profiling.
Here are some simple stopwatch based benchmarks comparing new and old machines. Its much snappier all round, and definitely speedier for development work.
|2007 Macbook Pro 2.16GHz||2010 Macbook Pro 2.4GHz i5|
|7200rpm HD||5400rpm HD||SSD|
|Boot, from power on to desktop first appearing||30s||40s||24s|
|Build complex iPhone project from clean||86s||48s||45s|
|iPhone sim & Xcode install & debug app||10s||9s||3s|
|Instruments open 30MB trace||11s||6s|
|Start Photoshop CS3 (1st time, 2nd time)||15s / 5s||5s / 4s|
The high-res display gives more pixels within the same space, so GUI elements take up less space and fonts draw smaller. This means Xcode and the simulator fit on the high res display. For me they didn't quite fit right on the normal display, so I always found myself re-arranging windows when working out of my office (where I have a 27" desktop display). You can see this in the two screen shots below, the first from the old macbook and below that the new high-res macbook. I boosted the font for code from Monaco-12 on old macbook (also great on my desktop display) to Monaco-14 to get the same sized text on the high res macbook display. I might settle on a 12 or 13 though because the new screen is much clearer than the old one. Fortunately Xcode makes it easy to change font sizes for code so switching between 12pt for desktop and 14pt when on the road shouldn't be an annoyance.
Open-GL on Simulator
I was hoping that the faster CPUs would boost performance of the iPad simulator running OpenGL. OpenGL on the simulator has terrible performance, I guess this is because the simulator is doing all its graphics with CPU based emulation of the graphics hardware on the phones, or maybe it just doesn't use real graphics hardware on the macbook. On the one hand thats fine for performance work because performance work of course has to be done on real devices. However for general game and graphics logic development it means that running the game on the simulator (especially in iPad mode) means that frame rates are really low, lower than a generation 1 iPhone. The new macbook didn't really help much here, OpenGL on the simulator still pegs one CPU on the macbook, and frame rates really didn't improve much.
|System Version||10.6.4 (10F569)|
|Physical RAM||4096 MB|
|Drive Type||OWC Mercury Extreme Pro SSD|
|GCD Loop||296.65||15.64 Mops/sec|
|Floating Point Basic||166.76||3.96 Gflop/sec|
|vecLib FFT||109.83||3.62 Gflop/sec|
|Floating Point Library||386.71||67.34 Mops/sec|
|Computation||483.74||9.80 Mops/sec, 4 threads|
|Lock Contention||447.80||19.26 Mlocks/sec, 4 threads|
|Quartz Graphics Test||243.53|
|Line||191.89||12.78 Klines/sec [50% alpha]|
|Rectangle||244.42||72.97 Krects/sec [50% alpha]|
|Circle||216.59||17.65 Kcircles/sec [50% alpha]|
|Bezier||207.61||5.24 Kbeziers/sec [50% alpha]|
|OpenGL Graphics Test||192.35|
|Spinning Squares||192.35||244.01 frames/sec|
|User Interface Test||326.40|
|Uncached Write||282.94||173.72 MB/sec [4K blocks]|
|Uncached Write||278.32||157.47 MB/sec [256K blocks]|
|Uncached Read||92.01||26.93 MB/sec [4K blocks]|
|Uncached Read||365.84||183.87 MB/sec [256K blocks]|
|Uncached Write||1186.91||125.65 MB/sec [4K blocks]|
|Uncached Write||517.95||165.82 MB/sec [256K blocks]|
|Uncached Read||2940.24||20.84 MB/sec [4K blocks]|
|Uncached Read||975.84||181.07 MB/sec [256K blocks]|