There are a gazillion factors at work here, from bugs in your code to JVM implementation to kernel thread scheduler. Without exquisite detail, I don't think its even possible to shed some light as to why you're seeing a slight (less than doubling is 'slight', in meaningful profiling). Even with all that info, I doubt -I- could tell you, though I cannot of course speak for other posse listeners.
A few quick and dirty ones: - try this on linux 2.6. It has a kick ass thread scheduler. - are you synchronizing on anything, or did you add Thread.sleep/wait anywhere? That tends to make stuff worse. - are you on the server VM? I don't think this matters anymore in 6u10, though, as the mixed mode VM is pretty smart, or so I hear. - are you using exactly 2 threads, slightly more than that, or a massive amount of them? On Nov 14, 7:04 pm, Alexey Zinger <[EMAIL PROTECTED]> wrote: > A little while ago I wrote a simulation of the Monty Hall puzzle. The > simulator is given 3 players of different strategies (one makes a decision at > random, the other never switches doors, and the third always switches) and > runs each player through a configurable number of games, outputting each > player's outcomes at the end. Seems fairly simple and everything was working > as expected. > > Seeing as I have a dual core machine (XP Pro, JRE 1.6_10), I looked at the > way the CPU was being utilized and to my surprise I saw a fairly even > utilization of both cores, despite the program being single-threaded. Then I > decided to make the simulator multi-threaded and see what would happen to the > utilization graph and speed of the application. I converted the > code invoking the game generation and running API to use Java concurrency > framework, which also game me good control over how many threads I wanted to > use or if I wanted to run everything single-threaded still. Once I got > everything working again, I was dismayed to see somewhat uneven invocation of > the cores and, more importantly, the multi-threaded mode seems to be running > consistently slower than the single-threaded mode. It also uses more memory, > which appears to be directly proportional to how many threads I allow it to > allocate. The memory demands make sense, but what's the deal with worse > performance in concurrent mode? Here is a sample output: > > Tries: 1000000. > Single-threaded... > Random Player won 500177 cars and 499823 goats. > Cars were distributed as follows: 332820 333805 333375 > Goats were distributed as follows: 667180 666195 666625 > > Never Change Player won 333555 cars and 666445 goats. > Cars were distributed as follows: 333274 333294 333432 > Goats were distributed as follows: 666726 666706 666568 > > Always Change Player won 667476 cars and 332524 goats. > Cars were distributed as follows: 332660 333696 333644 > Goats were distributed as follows: 667340 666304 666356 > > Execution time: 28sec. > > Concurrent... > Random Player won 499379 cars and 500621 goats. > Cars were distributed as follows: 333939 333019 333042 > Goats were distributed as follows: 666061 666981 666958 > > Never Change Player won 333384 cars and 666616 goats. > Cars were distributed as follows: 333502 331961 334537 > Goats were distributed as follows: 666498 668039 665463 > > Always Change Player won 666691 cars and 333309 goats. > Cars were distributed as follows: 334080 332585 333335 > Goats were distributed as follows: 665920 667415 666665 > > Execution time: 38sec. > > I'm using a separate random number generator for each game play, so that at > least shouldn't be the bottle neck according to the Javadocs. I'd be happy > to post the source if need be, but I'm hoping I'm missing something simple. > > Alexey > 2001 Honda CBR600F4i (CCS) > 1992 Kawasaki > EX500http://azinger.blogspot.comhttp://bsheet.sourceforge.nethttp://wcollage.sourceforge.net --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "The Java Posse" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/javaposse?hl=en -~----------~----~----~----~------~----~------~--~---
