Re: [Ikvm-developers] IKVM Compiled DLL and multithreading
Brought to you by:
jfrijters
|
From: Jeroen F. <je...@su...> - 2014-04-10 16:04:38
|
Without actual code I can only guess, but it could be related to synchronization. In HotSpot, synchronization is heavily optimized (because of the brain damaged design of the early days Java collection classes) and .NET synchronization is not very optimized at all. Regards, Jeroen From: Micle, Florin [mailto:Mi...@ad...] Sent: Thursday, April 10, 2014 17:56 To: ikv...@li... Subject: [Ikvm-developers] IKVM Compiled DLL and multithreading Hello everyone, I used IKVMC to compile a jar into a .NET DLL. The jar does some intensive math computations, maxing out the CPU core on which the thread runs. In Java each thread will max out at 12.5% CPU (because I have 8 cores, 100% / 8 = 12.5% max CPU per thread). It works fine if I have one thread or 6. If I use this in the .NET world, one thread will use 12.5% CPU, 2 threads will use about 11% CPU each, 3 threads about 9%, 4 threads about 7% each. The performance of each thread degrades considerably the more threads I have. Doesn't happen if I use the jar from a java app. It feels like it's something deep inside the compiled .NET DLL there is some serialization that occurs, some resource contention... no idea... I tried setting the apartment option to MTA when compiling the jar and it didn't make a difference. Any suggestions would be highly appreciated. Best Regards, Florin Micle |