The development of CrossWorks 3 has taken longer than we ever expected. During that period, we visited each part of the software to evaluate, polish, improve, and perhaps completely rewrite it. The changes in CrossStudio range from subtle (changing a few icons here and there, improving performance) to extensive (threaded source indexer, parallel build system, slick source control, new trace support). Here are some of the highlights in CrossWorks 3…

Parallel and Unity Building

Quad core processor are now standard in desktops and laptops, and CrossStudio can take full advantage of multi-core processors when building your applications by scheduling projects to build in parallel. To partner parallel building, CrossStudio also introduces support for unity builds where a set of source files are compiled as a single unit.

To illustrate the advantages of these new features, here are the build times for rebuilding the example HTTP server included in many CrossWorks board support packages, with the exception that all projects are source code rather than object code libraries:

Cores Unity? Time Speedup Comments
1 No 21s 1x Baseline
2 No 15s 1.4x
4 No 10s 2.1x
8 No 9.4s 2.2x Hyperthreading doesn't really help
1 Yes 6.3s 3.3x
2 Yes 4.5s 4.6x
4 Yes 3.1s 6.8x
8 Yes 3.2s 6.5x Hyperthreading isn't an advantage

And, building a set of sensor example projects, again in many board support packages, in a single solution:

Cores Unity? Time Speedup Comments
1 No 65s 1x Baseline
2 No 41s 1.6x
4 No 24s 2.7x
8 No 20s 3.3x Hyperthreading does help
1 Yes 39s 1.6x
2 Yes 23s 2.8x
4 Yes 14s 4.6x
8 Yes 11s 5.9x Hyperthreading does help

These timings were taken on Windows 7 running under Parallels 9 on a Retina MacBook Pro with a 4-core 2.3 GHz Intel Core i7 and 8 GB of memory allocated to the virtual machine. The effect of parallel building will depend upon the way you structure your project and the performance of your hardware.

Source indexer

The source indexer is completely reworked to be much more precise. Indexing takes place in the background, using threads to index your code quickly. You can change the number of threads launched to index your project, choosing between performance and responsiveness when indexing.

Hand in hand with the indexer, the code editor is improved with code completion where appropriate suggestions pop up as you type. Because the indexer is very accurate, code completion is also accurate, increasing your productivity as a programmer.

To complement the indexer, CrossStudio adds a Find References capability that fill search your application for references to items. As you would expect, Find References runs in parallel, is configurable, and is a great way to find the uses of functions, variables, types, and members.

Source control

Source-control integration is now significantly faster in CrossStudio 3. We're added source-control annotations to the project explorer, but kept the ability to show the source-control column from CrossStudio 2.

We've changed the source-control model that CrossStudio 3 uses from the check-out/lock/check-in model (as used by Visual Source Safe and RCS) to the widely used update/merge/commit model (as used by CVS and Subversion).

In addition, we've added the popular Pending Changes window that succinctly shows you the changes you've made and the overall state of the items in your project. We've also added a source-control state filter to the project explorer, if you're more comfortable working in that window.

Source-control state updates progress in the background and much more efficient than the CrossStudio 2 implementation, making CrossStudio a real pleasure to use.