Author: davsclaus
Date: Sun Mar 27 09:16:45 2011
New Revision: 1085896

URL: http://svn.apache.org/viewvc?rev=1085896&view=rev
Log:
CAMEL-3807: Use system current time millis for calculating time diff as adviced 
by java performance expert.

Modified:
    
camel/trunk/camel-core/src/main/java/org/apache/camel/management/InstrumentationProcessor.java
    
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/SamplingThrottler.java

Modified: 
camel/trunk/camel-core/src/main/java/org/apache/camel/management/InstrumentationProcessor.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/management/InstrumentationProcessor.java?rev=1085896&r1=1085895&r2=1085896&view=diff
==============================================================================
--- 
camel/trunk/camel-core/src/main/java/org/apache/camel/management/InstrumentationProcessor.java
 (original)
+++ 
camel/trunk/camel-core/src/main/java/org/apache/camel/management/InstrumentationProcessor.java
 Sun Mar 27 09:16:45 2011
@@ -20,6 +20,7 @@ import org.apache.camel.AsyncCallback;
 import org.apache.camel.Exchange;
 import org.apache.camel.management.mbean.ManagedPerformanceCounter;
 import org.apache.camel.processor.DelegateAsyncProcessor;
+import org.apache.camel.util.StopWatch;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -57,21 +58,15 @@ public class InstrumentationProcessor ex
 
     @Override
     public boolean process(final Exchange exchange, final AsyncCallback 
callback) {
-        // use nano time as its more accurate
-        // and only record time if stats is enabled
-        long start = -1;
-        if (counter != null && counter.isStatisticsEnabled()) {
-            start = System.nanoTime();
-        }
-        final long startTime = start;
+        // only record time if stats is enabled
+        final StopWatch watch = (counter != null && 
counter.isStatisticsEnabled()) ? new StopWatch() : null;
 
         return super.process(exchange, new AsyncCallback() {
             public void done(boolean doneSync) {
                 try {
                     // record end time
-                    if (startTime > -1) {
-                        long diff = (System.nanoTime() - startTime) / 1000000;
-                        recordTime(exchange, diff);
+                    if (watch != null) {
+                        recordTime(exchange, watch.stop());
                     }
                 } finally {
                     // and let the original callback know we are done as well

Modified: 
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/SamplingThrottler.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/SamplingThrottler.java?rev=1085896&r1=1085895&r2=1085896&view=diff
==============================================================================
--- 
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/SamplingThrottler.java
 (original)
+++ 
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/SamplingThrottler.java
 Sun Mar 27 09:16:45 2011
@@ -43,7 +43,7 @@ public class SamplingThrottler extends D
     private long messageFrequency;
     private long currentMessageCount;
     private long samplePeriod;
-    private long periodInNanos;
+    private long periodInMillis;
     private TimeUnit units;
     private long timeOfLastExchange;
     private StopProcessor stopper = new StopProcessor();
@@ -70,7 +70,7 @@ public class SamplingThrottler extends D
         }
         this.samplePeriod = samplePeriod;
         this.units = units;
-        this.periodInNanos = units.toNanos(samplePeriod);
+        this.periodInMillis = units.toMillis(samplePeriod);
     }
 
     @Override
@@ -102,8 +102,8 @@ public class SamplingThrottler extends D
                     doSend = true;
                 }
             } else {
-                long now = System.nanoTime();
-                if (now >= timeOfLastExchange + periodInNanos) {
+                long now = System.currentTimeMillis();
+                if (now >= timeOfLastExchange + periodInMillis) {
                     doSend = true;
                     if (log.isTraceEnabled()) {
                         log.trace(sampled.sample());


Reply via email to