Linked by Thom Holwerda on Sun 2nd Dec 2007 22:41 UTC, submitted by Amit Bahree
.NET (dotGNU too) "With all the modern systems using multi-core and multi-processor systems, tapping this new power is an interesting challenge for developers. It also fundamentally starts the shift on how your 'average Joe' interacts with a computer and things that he/she expects to be able to. First, check out the 'Manycore Shift' paper from Microsoft. Second checkout the Parallel Extensions to .NET 3.5 which is a programing model for data and task parallelism. It also helps with coordination on parallel hardware (such as multi-core CPU's) via a common work schedules. There is also a new Parallel Computing Dev Center on MSDN. Before you download the December 2007 CTP, make sure you have the RTM bits of the .NET 3.5 runtime. There are also a number of bugs fixed in this new CTP. If you want a quick introduction then check out a few videos available."
Thread beginning with comment 288078
To read all comments associated with this story, please click here.
Re: jayson.knight
by tuttle on Mon 3rd Dec 2007 13:48 UTC
tuttle
Member since:
2006-03-01

Regardless, we are now on v3.5 of the CLR.


No. If you run a low level program such as http://www.codeproject.com/dotnet/DetectDotNet.asp to enumerate the available CLRs on a machine where .NET framework 3.5 is installed, you get the following:

Is .NET present : Yes
Root Path : C:WindowsMicrosoft.NETFramework
Number of CLRs detected : 2
CLR versions available :-
1.1.4322
2.0.50727
Press any key...

For non-functional languages, locks are an (if not THE) imperative part of multi-threaded application design, unless you want race conditions and deadlocks all over your application.


If you use shared mutable state for communication between threads, you have not much choice but to use locks.

But there are safer alternatives such as message passing. Of course somewhere deep in the message queue code there will still be a lock or some other low level synchronization primitive. But an application programmer will never have to mess with that. See the BeOS API for pervasive use of message queues.

I'd also love to know what these performance problems are that you speak of. It has been shown on numerous occasions that a properly designed .Net app has performance approaching that of unmanaged code.


The biggest performance problem is this: http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.asp.... This can lead to a factor 5 to 10 performance degradation compared to C++ when doing numerically intensive code. Still much better than java though, since java does not have structs at all.

Fortunately, this will be addressed in the next (3.0) release of the runtime.

But there are various optimizations that java VMs have been doing for ages that the CLR does not do, such as virtual method inlining. And the CLR also does not even attempt to vectorize code on CPUs with SSE3.

Edited 2007-12-03 14:03

Reply Score: 4

RE: Re: jayson.knight
by jayson.knight on Mon 3rd Dec 2007 14:43 in reply to "Re: jayson.knight"
jayson.knight Member since:
2005-07-06

Interesting, and thanks for correcting me. I've always been under the impression that CLR = MS's implementation of the CLI, which in turn = a good part of the .Net Framework and therefore the same version. MS's versioning scheme is cryptic to say the least, ala according to your info the following is true:

- We're on v3.5 of the .Net Framework
- We're on v2.0 of the CLR
- C# is in v3.0

Are you sure about Java inlining virtual methods? I just did a quick Google and wasn't able to confirm that. I thought that by definition, a virtual method cannot be inlined which is why a lot of folks were concerned about all methods being virtual in Java by default. I'm by no means versed in compiler theory, but I don't see how a virtual method can be inlined.

Reply Parent Score: 2

RE[2]: Re: jayson.knight
by evangs on Mon 3rd Dec 2007 18:36 in reply to "RE: Re: jayson.knight"
evangs Member since:
2005-07-07

http://portal.acm.org/citation.cfm?id=353191

Method devirtualization has been around in the JVM for quite a while. That paper (sadly requires a subscription) does a moderately good job of covering the various techniques used.

Reply Parent Score: 3