1) Unless Blitz Max exists for Android, those numbers are mute
2) For For loops one does not explicitly have to have the loop variable dim'ed before usage. Try it. The default declaration will be an Int
3) I think this case does not really prove anything. The way I see it
If your 8 million loops finish in 15ms, who cares?
If your 8 million loops finish in 100ms, how fast do you need user response to interrupt to be? 20ms? Then you only need 5 interruptions, not 266. That is a crazy amount of interruptions, and no wonder your loop time explodes.
If you loop takes longer than that, then the overhead of the interruptions will become less and less, and again, a mute point
So 1) Figure out how long your process actually takes (without sleep's) , 2) figure out the time interval that you think would be good enough to give the user a good experience in aborting the loop (and start a new one) and 3) insert the appropriate number of sleep(s) in the loop for that interaction. Then see how much overhead the sleep really has.