On Thursday, 16 June 2016 10:11:12 UTC+7, Nigel Tao wrote: > > On Thu, Jun 16, 2016 at 11:22 AM, <gordo...@gmail.com <javascript:>> > wrote: > > it no longer does the array bounds check twice > > It's not safe, but you might want to try disabling bounds checking by > "go tool compile -B" or "go build -gcflags=-B" >
In fact, in this case it is safe because the loop code has a built-in array check in checking that the 'j' variable doesn't go past the top of the array (and in the enclosing loop that the 'i' index doesn't go past the index of the square root of the top value), which array is sized to contain that top array index. I am not currently at my usual test machine so will wait a few hours to post the results, but I would assume that just the two instruction array bounds check, which takes about two CPU clock cycles, will be eliminated, thus it is likely that the run time twill be reduced to about two thirds for a modern desktop CPU. This will still likely be slightly slower than optimized C/C++ code for the reasons given in my last post, but not bad at all. It's too bad one can't disable bounds checks only for certain ranges of code by "pragma"'s in the source code, but I don't suppose that is possible. -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.