Xcode 4 - slow performance
I have an issue with Xcode 4 really responding very slowly to user interactions, e.g. editing code, scrolling areas etc. This particularly happens with larger scale projects with many controllers/view files etc.
I completely wiped the hard disk and re-installed Snow Leopard and Xcode the other week but steadily it ground to a frustrating response time again (over a number of days) disrupting workflow considerably.
I have also on occasion removed the project's "derived data" via the Organiser -> Projects and this has had little effect.
I'm wondering if there is anything I can do to improve performance other than get a higher specced machine in the first instance.
FYI I'm running MacBook with Intel Core 2 Duo processors at 2GHz and 4GB of RAM.
In case we need to upgrade I'd also like to know if people are experiencing this poor performance from Xcode 4 on well specced machines (which would make our hardware upgrade rather pointless as it's only Xcode that has any performance issue on the MacBook).
If anybody has any suggestions or recommendations or could even let us know how improved hardware effects Xcode's performance on larger project trees then that would be extremely helpful and also a valuable resource for other devs in a similar position.
If you purge the workspace file it helps speed it up.
First, make sure Xcode isn't open. Now find your project file. Right-click on it, and select Show Package Contents
.
Next, delete project.xcworkspace
.
Open Xcode and enjoy faster performance!
Thanks to: http://meachware.blogspot.com/2011/06/speed-up-xcode-4.html
Edit: I've gotten several comments about this noting that for some projects this might cause problems. Make sure you have a backup of your project before performing these steps, and don't forget to check and test your project afterwards. Be sure you still have all of your executables and schemes.
IMPORTANT UPDATE: Paths changed for Xcode 6 (Thanks for the comment dcc)! I just added the alternative way.
There is another nice trick to fasten up builds by creating a ram disk with the following line of code:
diskutil erasevolume HFS+ "ramdisk" `hdiutil attach -nomount ram://8475854`
This creates an in-memory disk image with a size of about 4 GB. But be careful, you need to have enough memory. Of course you can create a smaller image like 2 GB (that would be 4237927).
Then you tell Xcode to store derived data there
You cannot tell Xcode to store the iPhone Simulator data there directly, but you can create a folder on the ramdisk and create a symbolic link instead of the iPhone Simulator directory by doing this:
Xcode 6:
cd /Volumes/ramdisk
mkdir CoreSimulator
rm -R ~/Library/Developer/CoreSimulator
ln -s /Volumes/ramdisk/CoreSimulator ~/Library/Developer/CoreSimulator
Older Xcode versions:
cd /Volumes/ramdisk
mkdir iPhone\ Simulator
rm -R ~/Library/Application\ Support/iPhone\ Simulator
ln -s /Volumes/ramdisk/iPhone\ Simulator ~/Library/Application\ Support/iPhone\ Simulator
If I build for the simulator with this setup, it's up and running in no time :)
Be aware that the ram disk will disappear when you restart your machine, so it could be a good idea to create a script or something that runs on startup. AND DON'T PLACE ANY DATA THERE THAT YOU WANT TO KEEP!!!
UPDATE 2013-03-12:
Read the comment from Francisco Garcia below!
With my new MBP (containing a SSD drive) I do not need this method any more. Xcode runs like hell :). I hope this is not seen as advertising for the big fruit concern, it's just an experience report...