You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ace.apache.org by ja...@apache.org on 2014/03/05 17:04:09 UTC
svn commit: r1574549 -
/ace/trunk/org.apache.ace.gogo/src/org/apache/ace/gogo/misc/MiscCommands.java
Author: jawi
Date: Wed Mar 5 16:04:09 2014
New Revision: 1574549
URL: http://svn.apache.org/r1574549
Log:
Added time function to time the total execution time of other functions.
Modified:
ace/trunk/org.apache.ace.gogo/src/org/apache/ace/gogo/misc/MiscCommands.java
Modified: ace/trunk/org.apache.ace.gogo/src/org/apache/ace/gogo/misc/MiscCommands.java
URL: http://svn.apache.org/viewvc/ace/trunk/org.apache.ace.gogo/src/org/apache/ace/gogo/misc/MiscCommands.java?rev=1574549&r1=1574548&r2=1574549&view=diff
==============================================================================
--- ace/trunk/org.apache.ace.gogo/src/org/apache/ace/gogo/misc/MiscCommands.java (original)
+++ ace/trunk/org.apache.ace.gogo/src/org/apache/ace/gogo/misc/MiscCommands.java Wed Mar 5 16:04:09 2014
@@ -21,17 +21,40 @@ package org.apache.ace.gogo.misc;
import java.util.Timer;
import java.util.TimerTask;
+import org.apache.felix.service.command.CommandSession;
import org.apache.felix.service.command.Descriptor;
+import org.apache.felix.service.command.Function;
import org.osgi.framework.BundleContext;
import org.osgi.framework.BundleException;
public class MiscCommands {
public final static String SCOPE = "misc";
- public final static String[] FUNCTIONS = new String[] { "shutdown", "sleep" };
+ public final static String[] FUNCTIONS = new String[] { "shutdown", "sleep", "time" };
private volatile BundleContext m_context;
+ @Descriptor("report the time the execution of one or more given function(s) took")
+ public void time(CommandSession session, Function[] args) throws Exception {
+ if (args.length < 1) {
+ throw new IllegalArgumentException("Usage: time {op1} ... {opN}");
+ }
+ long start = System.currentTimeMillis();
+ for (Function func : args) {
+ func.execute(session, null);
+ }
+ long diff = System.currentTimeMillis() - start;
+
+ // Try to format into a little more readable units...
+ double time = diff;
+ String unit = "msec";
+ if (time > 1000.0) {
+ time = time / 1000.0;
+ unit = "sec";
+ }
+ session.getConsole().printf("execution took %.3f %s.%n", time, unit);
+ }
+
@Descriptor("let the thread sleep")
public void sleep(long delay) {
try {