When I open task manager and look on the Java process hosting the Minecraft process, it is using roughly 25% of my CPU. By viewing my GPU activity under Process Explorer, it is using around 13% of it. And still, I have only around 30-40 FPS in game. It is clear that the lack of parallelization is a large must for Minecraft.
In the earlier years of computing history, all the processors (for end-users) where single-core. Along with time, the CPU clock speed increased. Moore's law said that the amount of transistors on a circuit board would double approximately every two years. However, the current processors we see today have around 2-3GHz clock speed - which has been the same the last few years, but instead of increasing the clock speed, the processors got smaller. And because they got smaller and more power efficient, we where able to put several CPU cores together.
The dramatic change in CPU architecture had a severe impact on how programmers had to design their software. Programmers where used to write sequential code, meaning the program does one command, then goes on with another command. Because of the increase of clock speed for single cores, no modifications was needed in order to make an algorithm faster. This is the reason so many old (and new) programs are still using 100% of just one core of the CPU. The new programming technique to take advantage of the new cores is called parallel programming. A good description of it is by taking a sequence of code, and split it up and distribute it over different cores on the CPU. Many games uses this technique for GPU rendering.
I believe it is important for Minecraft to get over to multi-thread support. Even though it requires a lot of work, it would have a great impact on peoples FPS rates. And this will get more and more important as we will soon have processors with over 8 cores. I know there is support for this in .NET and C++ for some different platforms, but I am not sure with Java.
Anyone else who agrees with me on this?
Would be nice if it could be implemented, but I think it is just a huge backload of work when doing it. Also I think nearly all mods would need to be rewritten because of different datahandling and stuff. So good idea but I think it should be done in a major release (like Minecraft 2.0 or something like that)
Oh and yeah Java has afaik support for Multithreading/Multicore working
Well Minecraft wasn't built around multi-core support and hasn't been retrofitted to support multi-cores yet, maybe with the new rendering updates Jeb & Co. are working on they can add it.
@Martinmine in Optifine with multi-core features doesn't it just spread part of the load from one core to the other so that two things get completed at once without increasing CPU usage very much?
I thought that was the point of multiple cores, but if not, please forgive my ignorance.
Rollback Post to RevisionRollBack
ragnarock200: awesome, are those things with the creeper faces pistons or furnaces
Snowey1994: There dispensers
MultiCore does not increase the load overall on your cpu but on the cores it should do so. E.g. You have 4 Cores without MultiCore support 1 core runs at 100% so overall you have a load of 25%, with Multicore support every core runs at 25% but the overall amount is the same 25%
Also keep in mind that you can't thread all things, when one operation is dependent on the result of another it can't run at the same time or atleast only up to the point where it needs the input. I don't know what Minecraft can do simultaneously but I think there a many things that can't be done that way.