Warn if blocks take a long time to resolve; added debug logging to report

a histogram of block load times.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@2600 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
Michael Bayne
2003-05-21 17:10:41 +00:00
parent 768da14b79
commit 0642b97258
@@ -1,10 +1,11 @@
// //
// $Id: SceneBlockResolver.java,v 1.5 2003/05/20 23:57:48 mdb Exp $ // $Id: SceneBlockResolver.java,v 1.6 2003/05/21 17:10:41 mdb Exp $
package com.threerings.miso.client; package com.threerings.miso.client;
import java.awt.EventQueue; import java.awt.EventQueue;
import com.samskivert.util.Histogram;
import com.samskivert.util.LoopingThread; import com.samskivert.util.LoopingThread;
import com.samskivert.util.Queue; import com.samskivert.util.Queue;
@@ -71,10 +72,24 @@ public class SceneBlockResolver extends LoopingThread
} }
try { try {
long start = System.currentTimeMillis();
Log.debug("Resolving block " + block + "."); Log.debug("Resolving block " + block + ".");
if (block.resolve()) { if (block.resolve()) {
Log.debug("Resolved block " + block + "."); Log.debug("Resolved block " + block + ".");
} }
long elapsed = System.currentTimeMillis() - start;
_histo.addValue((int)elapsed);
// warn if a block takes a long time to resolve
if (elapsed > LONG_RESOLVE_TIME) {
Log.warning("Block took long time to resolve [block=" + block +
", elapsed=" + elapsed + "ms].");
}
// report statistics
if (_queue.size() == 0) {
Log.info("Resolution histogram " + _histo.summarize() + ".");
}
// queue it up on the AWT thread to complete its resolution // queue it up on the AWT thread to complete its resolution
EventQueue.invokeLater(new Runnable() { EventQueue.invokeLater(new Runnable() {
@@ -95,4 +110,10 @@ public class SceneBlockResolver extends LoopingThread
/** Indicates whether or not we are resolving or suspended. */ /** Indicates whether or not we are resolving or suspended. */
protected boolean _resolving = true; protected boolean _resolving = true;
/** Used to time block loading. */
protected Histogram _histo = new Histogram(0, 25, 100);
/** Blocks shouldn't take too long to resolve. */
protected static final long LONG_RESOLVE_TIME = 500L;
} }