Xcode 2.3 initial impressions
Xcode 2.3 initial impressions
- Subject: Xcode 2.3 initial impressions
- From: Allen Cronce <email@hidden>
- Date: Wed, 24 May 2006 07:32:24 -0700
Hi all,
I've got nothing but good things to say about Xcode 2.3. Here's some
initial observations:
* Debug build time:
With previous versions of Xcode, our debug build turn around time was
abysmal. We've got some static libraries that were insanely bloated by
stabs debug symbols and precompiled header use. There was also a bug
with dependencies and CreateUniversalBinary for static libraries where
lipo would run all the time. In one example, these problems combined in
the re-creation of a 460 meg static library every time we built any
project dependent on the static library. Build times for minor changes
could in the tens of minutes, and the strain on system resources would
cause our machines to swap their brains out, rendering them unusable.
After moving to 2.3 and switching our projects to Dwarf, debug build
time is dramatically reduced. It's not as fast as CW, but Xcode is
closing the gap.
And the size of the debug binaries are also much, much smaller. For
example, our 460 meg debug static library dropped to 19 meg. And because
overall sizes are reduced, the strain on the OS is a lot less. No more
frantic VM swapping during builds. I can actually use other applications
while building now!
Initial testing of debugging our projects also looks good. So far there
are no downsides to switching to Dwarf that we've found.
* Release binary size:
One of my big pet peeves has been that the linker/dead code stripping
doesn't work very well in Xcode 2.2.1 with our code base. I've seen
clear evidence that unused objects and methods were getting linked into
our binaries. In a recent example, an Internet plug-in that was 88k when
built by CW was a 1.6 meg universal when built with Xcode. Judicious use
of conditionals and a lot of elbow grease got this down to 600k, which
is still 3.4 times larger when you adjust for a single binary.
Much to my surprise, Xcode 2.3 generates much smaller release binary
sizes with no code or project changes (other than the move to Dwarf). So
in the above example our 600k universal built under Xcode 2.2.1 is only
240k when built under 2.3. That's still 32k bigger than CW when adjusted
for a single binary. But at least it isn't over 3 times bigger. That's
completely acceptable to me.
After doing a complete build of all of our linked deliverables, we saved
megabytes of binary size across the board. Since our products are used
by developers in their binaries, it means that their products will also
be much smaller. This is a huge win for our customers and ourselves.
I couldn't find anything in the read me about binary size reduction. I
would have expected Apple to say "we fixed dead code stripping" or
something. All that I found regarding the linker had to do with
dependencies and link paths. I haven't analyzed the resulting binaries
to see what's different yet.
Maybe someone from Apple can comment on what changed regarding binary
size? Apologies in advance if I missed something in the read me.
----
So overall, I'm very happy with this release. Thank you Apple!
My only regret was that I couldn't use Xcode 2.3 earlier. Our company
was in the middle of a major release so we couldn't switch horses during
the developer preview. Only one of our engineers who's working on future
stuff switched so that we could provide feedback. It made the rest of us
jealous ;-)
Best,
--
Allen Cronce
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Xcode-users mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden