Garbage Collection and Skipped Turns
← Thread:Talk:XanderCat/Garbage Collection and Skipped Turns/reply (9)
Java treats an array as an object, so on the heap.
However, these days the JVM is more intelligent than you guys are giving it credit for, eg. it has Escape Analysis to determine if objects should be put on the stack if they stay local.
Didn´t know about escape analysis.
What I usually do to take in account all optimizations, even those I don´t know about, is to use profiling tools. Measure what is really happening, instead of looking at the code and guessing.
I've actually been debating writing a Robocode simulator to make robot profiling much easier. What it would do is to pretend to run a robot battle with your robot against either another opponent, or perhaps some imaginary robot, using a combination of mock objects and simulation. It would run without any security at all, no sandbox, nor would their be skipped turns, so you would only want to run it with trusted robots. But it would be much easier to run a profiler against. The simulated battle may not be a perfect simulation, but as long as it's close, it should work and be useful.
When I do profiling in Robocode, I run a battle of a bot against itself. Then I filter the results by package so engine data is filtered out and only data from my bots appear in the profiling report.
What profiling tool do you use? I haven't tried that many, but I've been rather unsuccessful trying to use profiling tools on Robocode. The last one I tried was Visual VM, but when you try to profile a running instance of Robocode with Visual VM, it prompts for a username and password. I kind of gave up and assumed I would run into similar trouble with all profiling tools, either due to the Robocode security setup or due to the odd way that Robocode loads classes and sandboxes robots. If you know of a profiling tool that works with existing Robocode, please share!
I tried VisualVM and when it asked for username/pw I just did a/a and it worked, I suspect it asks for them but doesn't actually use them.
Make sure you start robocode with -Ddebug=true so that it disables skipped turns!
I got Visual VM working and running through Eclipse too. Its a bit unintuitive to set up through Eclipse but its working now and easy to run. As MN says you can filter out any results from specific packages and just profile your bot (though its worth noting that you might want to leave any java data structure packages such as the Vector class if you use it a lot in your robot).
I managed to get my movement running pretty fast within an hour of getting Visual VM running! :D
If I find the time I might write a wiki page on how to get it up and running in Eclipse and how to set it up to profile your robot.
You do not have permission to edit this page, for the following reasons:
You can view and copy the source of this page.
Return to Thread:Talk:XanderCat/Garbage Collection and Skipped Turns/reply (19).