cpuConstant
Hi all, I decided to work on my skipped turns and to watch my execution time. As the first step, I recalculated cpuConstant according to cpuManager code (I wish it would be available from within the robot) at the beginning of each round. Guess what. The number wildly fluctuate. By wildly, we are talkin more than FOUR times!!! On the short end of the spectrum cpuConstant is about 8mS and it can be as large as 35mS.
Any ideas what is going on? Everything is done with openjdk8. One difference from the original code: I measure time with System.nanoTime()
Yes with Turbo Boost, CPU speed is not constant ;) And I think every new CPU should have something like that.
I would expect the cpuConstant go lower as turbo kicks in. But my first run usually gives lower number (faster speed), and consequent executions typically but not always are longer/slower.
In either case it is a problem. Recall recently discussed ThreadDeath issue.
Do you relay highly on GC? I mean do you create objects in loops? If the speed gets slower, I can only guess that would be GC.
You do not have permission to edit this page, for the following reasons:
You can view and copy the source of this page.
Robocode gives robots extra time at the beginning of a round. In addition, most of this time is probably taken away by one-time setup and initialization code, making your calculated CPU constant longer than it should be.
Ok. I see why skipped turn event is not fired. But the wildly fluctuating cpu constants is still under the question. The cpu constant calculation is done within one call: it just long loop with heavy math.
Unless GC kicks in at random I see no explanation for it. The problem that it probably does it during the round as well, since I see wildly fluctuating timing in my profiler.