diff --git a/src/test/java/org/luaj/vm/LoadStateTest.java b/src/test/java/org/luaj/vm/LoadStateTest.java index 4ab6788c..1272c1d9 100644 --- a/src/test/java/org/luaj/vm/LoadStateTest.java +++ b/src/test/java/org/luaj/vm/LoadStateTest.java @@ -63,7 +63,7 @@ public class LoadStateTest extends TestCase { } } - public void testLongBitsToLuaNumberSpeed() { + public void testLongBitsToLuaNumberSpeed() throws InterruptedException { long[] BITS = new long[ 500000 ]; Random r = new Random(); @@ -74,21 +74,55 @@ public class LoadStateTest extends TestCase { BITS[i ] = r.nextLong(); BITS[i+1] = Double.doubleToLongBits( r.nextDouble() ); } + - long startTime = System.currentTimeMillis(); - for ( int j = 0; j < BITS.length; ++j ) { - LoadState.longBitsToLuaNumber( BITS[j] ); + long simpleConversionCount = 0; + long complexConversionCount = 0; + + collectGarbage(); + long startTime = leadingEdgeTime(); + long endTime = startTime + 1000; + int count = 0; + int n = BITS.length; + for ( ; currentTime()= simpleConversionCount ); } + + private void collectGarbage() throws InterruptedException { + Runtime rt = Runtime.getRuntime(); + rt.gc(); + Thread.sleep(20); + rt.gc(); + Thread.sleep(20); + } + + private static long leadingEdgeTime() { + long s,e = currentTime(); + for ( s=currentTime(); s==(e=currentTime()); ) + ; + return e; + } + + private static long currentTime() { + return System.currentTimeMillis(); + } + }