Thanks for sharing ...

Jump to navigation Jump to search
Revision as of 6 July 2012 at 05:24.
The highlighted comment was created in this revision.

Thanks for sharing ...

Hi mate. Nice one, i was just starting to write my own and now you share yours :). I will take it right away.

    Wompi15:54, 5 July 2012

    You are welcome:) Feel free to ask any questions or report any problems, if they will appear:) But do not forget to share any improvements:)

      Jdev18:25, 5 July 2012
       

      Well :). I'm running (as usual) in very strange issues with System.nanoTime(). Maybe you can help me out with that. Looking at the sample table below your code, the max values look a little bit strange to me. I'm sure you are not spending 33ms on something. Using your class myself i run in the same issue. Therefore i spend some time to dig it out. To me it looks like the System.nanoTime() is not very reliable because it sometimes give simple wrong time differences back. Some quick googling on this issue shows that there are some different opinions on that :(. This might be have to do with the multi core structure on my mac and the time is grabbed from different cores ... who knows.

      On the other hand, if this is true, than it could be that some issues with the skipped turns are also coming from this time glitch.

      Of course, i can totally be wrong and missing some point here. Thats why i ask for a second thought :)

      Take Care

        Wompi19:10, 5 July 2012

        System.nanoTime() accuracy depends heavily on your hardware and OS.

          MN20:59, 5 July 2012
           

          Yes i guess you are right. But the difference is sometimes up to 100ms and that is clearly out of inaccuracy. I'm really not sure how some java programs can work without a proper time measure, but i'm sure it will work somehow and maybe i should learn a little more about this.

            Wompi00:19, 6 July 2012
             

            Just quick replay before going to bed: you,at least, miss garbage collector. Im not sure, but i think, that its stop all other threads.

              Jdev19:32, 5 July 2012
               

              Good point. I didn't know that the garbage collection is messing with the time measurement. I guess this makes max/total value a little obsolete. Anyway i'm very happy that you shared the code and it showed me that i'm running on 2ms turns, and i learned something too :). And of course if i find something to improve the functionality i will share it with pleasure.

              Have a good night.

                Wompi00:14, 6 July 2012
                 

                Ok, now full reply:)

                At first, GC MAY blocks all threads, and for me (Win7, Java 6, default settings) it DOES it, because, for example in battles between Tomcat and Scarlet in late rounds game periodically freezes for seconds...

                For robocode milliseconds is completly useless, but my experience shows, that nanoseconds is fairly usefull and i did find out with them some ways to decrease skipped turns amount.

                Maybe there is a sense to add some kind of protection against invalid values, for example, discard values larger that 10 ms or larger than mean value more than 10 times

                  Jdev07:24, 6 July 2012