Archive for December, 2007|Monthly archive page

Three weeks with Vista x64

Since three weeks I using Vista x64 on my workstation and my overall impression is positive. For one thing, the transformation was without problems, all my hardware devices have stable x64 drivers, the main obstacle was to install the new version without reactivation. But there is a small tool, ARBbeta3, which can safe existing activation credentials and restore them on the same Vista edition. More interesting is that there are less 64 bit versions of various tools available as I thought. Most 32 bit software works without problem but it would be nice to have a text editor with 64 bit support or at least Eclipse in a working version (at least Eclipse will be available with the version 3.4). Dot.Net was no problem, all though Visual Studio lost the “Edit and Continue” capability. Another sad thing is that Open Office has no 64 bit version as well as that all browser have to work with 32 bit because nearly no plug in is available for this platform. This is also true for Java, which has no 64 bit client runtime available.
I’ve used Ubuntu as 64 bit version for a longer time and in general Vista has a far better support of hardware and a flawless integration of older software.
I also took by backup now more serious and bought a external RAID, a Synology DiskStation 207+, and using Acronis TrueImage for full system backups. Both I can highly recommend.

Exploit easily your cores

Microsoft has released it’s Parallel Extensions to the .NET Framework 3.5 as CTP (you can found more about it on Joe Duffy’s Blog). The library provides some interesting features: one is a easy way to execute LINQ queries in parallel and simple loops. The other thing is that a simple to use Task execution library which, and this is the most interesting part, is not build up on the existing ThreadPool class instead a new Scheduler based on “Work-Stealing” is realized. Why is that important? Normally you use threads which have, although not so much, some overhead in creation and management. This plays no role for long running tasks but it is certainly not very effective for very small tasks as they exist if you want, as example, extend a sorting algorithm. On the other side you have often to sync the work of some parallel task so you use resettable events, in C#, and wait for them. The problem is that they are not cheap because they are using actively system resources, e.g. handles, which are somehow limited. The new library does not need event for this job, so the only resources used are the threads you assign to the TaskManager class. This is certainly not a production ready library but a very interesting one because it makes development of effective multi-core aware data structures and algorithms very easy. The Java world has already for some years a library like this: Doug Lea’s Concurrency Library has a Fork/Join framework which is also based on a “Work-Stealing” scheduler but I doubt a lot of people knew about it. The framework will be part of Java 7 which, sorry to say, will not be available until 2009.