Why aren’t multithreaded Java programs faster on ‘super’ Linux servers than laptop Win7?
Introduction
So far, I’ve been developing a piece of software and I’m now testing it to understand the benefits of concurrency. I’m testing the same software with two different systems :
- System 1: 2 x Intel(R) Xeon(R) CPU E5-2665 @ 2.40GHz with
A total of 16 cores with 64GB of RAM running on
Scientific LINUX 6.1 and JAVA SE runtime environments (builds
1.7.0_11-b21). - System 2 Lenovo Thinkpad T410 and Intel i5
Processor @ 2.67GHz, 4 cores, 4GB RAM, running Windows 7 64-bit
AND THE JAVA SE RUNTIME ENVIRONMENT (BUILD 1.7.0_11-B21).
Details: The procedure simulates a person with type 1 diabetes. It performs some imports (reading from csv), some numerical calculations (Dopri54 + newton), and some exports (writing to csv).
I have exclusive rights to the server, so there shouldn’t be any noise.
Result
These are my results:
Now you can see that System 1 is as fast as System 2, although it is a very powerful machine. I don’t know why this is – and I believe the system is the same. The number of threads is from 10 to 100.
Question:
Why is the execution time similar between the two runs, even though System 1 is much more powerful than System 2?
Update!
Now, I’m just thinking about what you guys call the I/O memory problem. So, I think if I can reduce the file size, it will speed up the program, right? I managed to reduce the size of the import file by 5x, however, the performance did not improve in the slightest. Do you still think this is the same problem?
Solution
When you write to a .csv file, the bottleneck may not be your computing power, but the write rate on your hard drive.