Write a tutorial for profiling basics
Profiling tools help indentify and fix performance issues. Terasology currently has run configurations for Java FlightRecorder and the YourKit profiler. This task would entail creation of a tutorial style repository to help developers get started with profiling Terasology. The wiki should have examples of badly written code, how to identify flaws using a profiler and methods to improve the code.
This can be developed into a task series going through all the steps from starting up a profiler to implementing a solution.
Acceptance Criteria
- A wiki page detailing how to start using FlightRecorder or YourKit with Terasology
- A wiki page detailing an example of a particular common flaw, how to detect it using the profiler and a potential fix
Where to Start
- This PR reduces memory allocations, one of the many ways code can be optimised https://github.com/MovingBlocks/Terasology/pull/3469
- A follow up to the above PR that added run configs for the Java FlightRecorder profiler https://github.com/MovingBlocks/Terasology/pull/3475
- IntelliJ's documentation on using the FlightRecorder here. Remember that we already have run configurations.
See Also
- Another task is about using a profiler to detect and investigate an actual performance bottleneck in the game and can be found here
- This task can be easily built upon to provide more documentation for profiling stuff or optimizations, if you have any ideas for such work, just let us know, and we might be able to provide you with specific GCI tasks
- Understanding and optimising string operations is usually a good place to start. Read up more on Strings in Java here
Note: This is a multi-instance task - other students can pick it too and might end up fixing the same reports. Take a look at pending PRs in the relevant repo before submitting yours; if another student has already fixed some issues in the same classes as you, you may need to change what you're fixing or wait till the earlier work is merged, then adjust what you're adding.