loops - Android fixed delta time still choppy? -
below game loop , logcat output. game runs bit choppy , noticed in logcat gc running every often. i'm not quite sure if gc or delta time causing this? can try point me in right direction based on info provided?
@override public void run() { canvas canvas; while (isrunning) { if (!gamepanel.paused) { canvas = null; try { startdraw = system.currenttimemillis(); canvas = surfaceholder.lockcanvas(); synchronized (surfaceholder) { gamepanel.update(deltatime); gamepanel.draw(canvas); } } { if (canvas != null) { surfaceholder.unlockcanvasandpost(canvas); enddraw = system.currenttimemillis(); mylogger.getinstance().log( "delta time = " + (enddraw - startdraw) / 1000.f); } } deltatime = (enddraw - startdraw) / 1000.f; } } } -09-04 15:59:29.855: d/dalvikvm(3273): gc_for_alloc freed 4427k, 35% free 18542k/28387k, paused 25ms, total 27ms 09-04 15:59:29.855: i/dalvikvm-heap(3273): grow heap (frag case) 22.083mb 4096016-byte allocation 09-04 15:59:29.886: d/dalvikvm(3273): gc_concurrent freed 2278k, 29% free 20263k/28387k, paused 3ms+3ms, total 27ms 09-04 15:59:30.144: d/mediaplayer(3273): start() muri null 09-04 15:59:30.160: d/mylogger(3273): delta time = 0.026 09-04 15:59:30.214: d/mylogger(3273): delta time = 0.052 09-04 15:59:30.253: d/mylogger(3273): delta time = 0.042 09-04 15:59:30.277: d/mylogger(3273): delta time = 0.019 09-04 15:59:30.293: d/mylogger(3273): delta time = 0.015 09-04 15:59:30.308: d/mylogger(3273): delta time = 0.017 09-04 15:59:30.324: d/mylogger(3273): delta time = 0.016 09-04 15:59:30.339: d/mylogger(3273): delta time = 0.016 09-04 15:59:30.355: d/mylogger(3273): delta time = 0.016 09-04 15:59:30.386: d/mylogger(3273): delta time = 0.026 09-04 15:59:30.402: d/mylogger(3273): delta time = 0.018 09-04 15:59:30.418: d/mylogger(3273): delta time = 0.019 09-04 15:59:30.441: d/mylogger(3273): delta time = 0.018 09-04 15:59:30.457: d/mylogger(3273): delta time = 0.015 09-04 15:59:30.464: d/mylogger(3273): delta time = 0.012 09-04 15:59:30.480: d/mylogger(3273): delta time = 0.018 09-04 15:59:30.496: d/mylogger(3273): delta time = 0.014 09-04 15:59:30.519: d/mylogger(3273): delta time = 0.017 09-04 15:59:30.535: d/mylogger(3273): delta time = 0.017 09-04 15:59:30.550: d/mylogger(3273): delta time = 0.017 09-04 15:59:30.574: d/mylogger(3273): delta time = 0.02 09-04 15:59:30.589: d/mylogger(3273): delta time = 0.017 09-04 15:59:30.605: d/mylogger(3273): delta time = 0.016 09-04 15:59:30.621: d/mylogger(3273): delta time = 0.02 09-04 15:59:30.644: d/mylogger(3273): delta time = 0.018 09-04 15:59:32.550: d/mylogger(3273): delta time = 0.016 09-04 15:59:32.566: d/mylogger(3273): delta time = 0.017 09-04 15:59:32.582: d/mylogger(3273): delta time = 0.015 09-04 15:59:32.597: d/mylogger(3273): delta time = 0.018 09-04 15:59:32.621: d/mylogger(3273): delta time = 0.019 09-04 15:59:32.636: d/mylogger(3273): delta time = 0.014 09-04 15:59:32.652: d/mylogger(3273): delta time = 0.018 09-04 15:59:32.668: d/mylogger(3273): delta time = 0.015 09-04 15:59:32.683: d/mylogger(3273): delta time = 0.017 09-04 15:59:32.699: d/mylogger(3273): delta time = 0.017 09-04 15:59:32.714: d/mylogger(3273): delta time = 0.017 09-04 15:59:32.730: d/mylogger(3273): delta time = 0.016 09-04 15:59:32.753: d/mylogger(3273): delta time = 0.017 09-04 15:59:32.769: d/mylogger(3273): delta time = 0.016 09-04 15:59:32.785: d/mylogger(3273): delta time = 0.016 09-04 15:59:32.808: d/mylogger(3273): delta time = 0.021 09-04 15:59:36.535: d/mylogger(3273): delta time = 0.012 09-04 15:59:36.558: d/mylogger(3273): delta time = 0.019 09-04 15:59:36.574: d/mylogger(3273): delta time = 0.017 09-04 15:59:36.589: d/mylogger(3273): delta time = 0.018 09-04 15:59:36.605: d/mylogger(3273): delta time = 0.015 09-04 15:59:36.621: d/mylogger(3273): delta time = 0.016 09-04 15:59:36.644: d/mylogger(3273): delta time = 0.018 09-04 15:59:36.652: d/mylogger(3273): delta time = 0.014 09-04 15:59:36.675: d/mylogger(3273): delta time = 0.02 09-04 15:59:36.691: d/mylogger(3273): delta time = 0.016 09-04 15:59:36.707: d/mylogger(3273): delta time = 0.015 09-04 15:59:36.722: d/mylogger(3273): delta time = 0.016 09-04 15:59:38.214: d/mylogger(3273): delta time = 0.015 09-04 15:59:38.230: d/mylogger(3273): delta time = 0.018 09-04 15:59:38.246: d/mylogger(3273): delta time = 0.017 09-04 15:59:38.269: d/mylogger(3273): delta time = 0.019 09-04 15:59:38.285: d/mylogger(3273): delta time = 0.019 09-04 15:59:38.308: d/mylogger(3273): delta time = 0.022 09-04 15:59:38.332: d/mylogger(3273): delta time = 0.021 09-04 15:59:38.347: d/mylogger(3273): delta time = 0.016 09-04 15:59:38.363: d/mylogger(3273): delta time = 0.016 09-04 15:59:38.378: d/mylogger(3273): delta time = 0.017 09-04 15:59:38.402: d/mylogger(3273): delta time = 0.017 09-04 15:59:38.418: d/mylogger(3273): delta time = 0.02 09-04 15:59:38.433: d/mylogger(3273): delta time = 0.014 09-04 15:59:38.457: d/mylogger(3273): delta time = 0.018 09-04 15:59:38.472: d/mylogger(3273): delta time = 0.017 09-04 15:59:38.488: d/mylogger(3273): delta time = 0.017 09-04 15:59:38.503: d/mylogger(3273): delta time = 0.017 09-04 15:59:38.519: d/mylogger(3273): delta time = 0.017 09-04 15:59:38.535: d/mylogger(3273): delta time = 0.016 09-04 15:59:38.550: d/mylogger(3273): delta time = 0.017 09-04 15:59:38.574: d/mylogger(3273): delta time = 0.018 09-04 15:59:38.589: d/mylogger(3273): delta time = 0.018 09-04 15:59:38.636: d/dalvikvm(3273): gc_concurrent freed 5659k, 35% free 18532k/28387k, paused 13ms+2ms, total 42ms 09-04 15:59:38.636: d/mylogger(3273): delta time = 0.043 09-04 15:59:38.652: d/mylogger(3273): delta time = 0.018 09-04 15:59:38.668: d/mylogger(3273): delta time = 0.019 09-04 15:59:38.683: d/mylogger(3273): delta time = 0.013 09-04 15:59:38.699: d/mylogger(3273): delta time = 0.019 09-04 15:59:38.730: d/mylogger(3273): delta time = 0.025 09-04 15:59:38.746: d/mylogger(3273): delta time = 0.02 09-04 15:59:38.769: d/mylogger(3273): delta time = 0.02 09-04 15:59:38.785: d/mylogger(3273): delta time = 0.014 09-04 15:59:38.808: d/mylogger(3273): delta time = 0.022 09-04 15:59:38.824: d/mylogger(3273): delta time = 0.022 09-04 15:59:38.839: d/mylogger(3273): delta time = 0.017 09-04 15:59:38.863: d/mylogger(3273): delta time = 0.02 09-04 15:59:38.878: d/mylogger(3273): delta time = 0.016 09-04 15:59:38.894: d/mylogger(3273): delta time = 0.019 09-04 15:59:38.918: d/mylogger(3273): delta time = 0.018 09-04 15:59:38.933: d/mylogger(3273): delta time = 0.018 09-04 15:59:38.957: d/mylogger(3273): delta time = 0.019 09-04 15:59:38.972: d/mylogger(3273): delta time = 0.019 09-04 15:59:38.996: d/mylogger(3273): delta time = 0.023 09-04 15:59:39.011: d/mylogger(3273): delta time = 0.02 09-04 15:59:39.035: d/mylogger(3273): delta time = 0.018 09-04 15:59:39.050: d/mylogger(3273): delta time = 0.018 09-04 15:59:39.074: d/mylogger(3273): delta time = 0.019 09-04 15:59:39.089: d/mylogger(3273): delta time = 0.018 09-04 15:59:39.113: d/mylogger(3273): delta time = 0.022 09-04 15:59:39.128: d/mylogger(3273): delta time = 0.017 09-04 15:59:39.144: d/mylogger(3273): delta time = 0.017 09-04 15:59:39.160: d/mylogger(3273): delta time = 0.018 09-04 15:59:39.191: d/mylogger(3273): delta time = 0.029 09-04 15:59:39.222: d/mylogger(3273): delta time = 0.028 09-04 15:59:39.238: d/mylogger(3273): delta time = 0.017 09-04 15:59:39.261: d/mylogger(3273): delta time = 0.02 09-04 15:59:39.277: d/mylogger(3273): delta time = 0.016 09-04 15:59:39.293: d/mylogger(3273): delta time = 0.017 09-04 15:59:39.308: d/mylogger(3273): delta time = 0.019 09-04 15:59:39.324: d/mylogger(3273): delta time = 0.014 09-04 15:59:39.339: d/mylogger(3273): delta time = 0.015 09-04 15:59:39.355: d/mylogger(3273): delta time = 0.018 09-04 15:59:39.371: d/mylogger(3273): delta time = 0.016 09-04 15:59:39.394: d/mylogger(3273): delta time = 0.019 09-04 15:59:39.410: d/mylogger(3273): delta time = 0.018 09-04 15:59:39.433: d/mylogger(3273): delta time = 0.02 09-04 15:59:39.449: d/mylogger(3273): delta time = 0.02
shujima pheonix right --- although won't lot, in looping, things can pile up. draw called fast , frequent, , looper too, when this:
mylogger.getinstance().log( "delta time = " + (enddraw - startdraw) / 1000.f); what is:
add 2 floats , divide result, take result , convert string. (maybe copy ?) string , append string "delta time = ", (maybe?) copy combined string again parameter passed .log() <- of you've gotten new instance of every time. far amount of overhead when in rapid loop ...
Comments
Post a Comment