Repository: incubator-htrace
Updated Branches:
  refs/heads/master 1191677f4 -> ab8dfe25e


HTRACE-170. Optimize use of Random in htrace-core by using ThreadLocalRandom 
(Vladimir Sitnikov via Colin P. McCabe)


Project: http://git-wip-us.apache.org/repos/asf/incubator-htrace/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-htrace/commit/ab8dfe25
Tree: http://git-wip-us.apache.org/repos/asf/incubator-htrace/tree/ab8dfe25
Diff: http://git-wip-us.apache.org/repos/asf/incubator-htrace/diff/ab8dfe25

Branch: refs/heads/master
Commit: ab8dfe25e382e7baf7b8add3be7c578e52fd840f
Parents: 1191677
Author: Colin P. Mccabe <[email protected]>
Authored: Wed May 13 19:02:34 2015 -0700
Committer: Colin P. Mccabe <[email protected]>
Committed: Wed May 13 19:02:34 2015 -0700

----------------------------------------------------------------------
 htrace-core/src/main/java/org/apache/htrace/Tracer.java         | 3 ++-
 .../src/main/java/org/apache/htrace/impl/CountSampler.java      | 5 ++---
 htrace-core/src/main/java/org/apache/htrace/impl/MilliSpan.java | 3 ++-
 .../main/java/org/apache/htrace/impl/ProbabilitySampler.java    | 4 ++--
 htrace-core/src/test/java/org/apache/htrace/TraceCreator.java   | 5 +++--
 5 files changed, 11 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-htrace/blob/ab8dfe25/htrace-core/src/main/java/org/apache/htrace/Tracer.java
----------------------------------------------------------------------
diff --git a/htrace-core/src/main/java/org/apache/htrace/Tracer.java 
b/htrace-core/src/main/java/org/apache/htrace/Tracer.java
index b8c4c1a..9463f41 100644
--- a/htrace-core/src/main/java/org/apache/htrace/Tracer.java
+++ b/htrace-core/src/main/java/org/apache/htrace/Tracer.java
@@ -23,6 +23,7 @@ import org.apache.htrace.impl.MilliSpan;
 import java.util.List;
 import java.util.Random;
 import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.concurrent.ThreadLocalRandom;
 
 /**
  * A Tracer provides the implementation for collecting and distributing Spans
@@ -30,10 +31,10 @@ import java.util.concurrent.CopyOnWriteArrayList;
  */
 public class Tracer {
   public static final Log LOG = LogFactory.getLog(Tracer.class);
-  private final static Random random = new Random();
 
   static long nonZeroRandom64() {
     long id;
+    Random random = ThreadLocalRandom.current();
     do {
       id = random.nextLong();
     } while (id == 0);

http://git-wip-us.apache.org/repos/asf/incubator-htrace/blob/ab8dfe25/htrace-core/src/main/java/org/apache/htrace/impl/CountSampler.java
----------------------------------------------------------------------
diff --git a/htrace-core/src/main/java/org/apache/htrace/impl/CountSampler.java 
b/htrace-core/src/main/java/org/apache/htrace/impl/CountSampler.java
index fe98916..be5063e 100644
--- a/htrace-core/src/main/java/org/apache/htrace/impl/CountSampler.java
+++ b/htrace-core/src/main/java/org/apache/htrace/impl/CountSampler.java
@@ -20,6 +20,7 @@ import org.apache.htrace.HTraceConfiguration;
 import org.apache.htrace.Sampler;
 
 import java.util.Random;
+import java.util.concurrent.ThreadLocalRandom;
 
 /**
  * Sampler that returns true every N calls. Specify the frequency interval by 
configuring a
@@ -28,10 +29,8 @@ import java.util.Random;
 public class CountSampler implements Sampler<Object> {
   public final static String SAMPLER_FREQUENCY_CONF_KEY = "sampler.frequency";
 
-  final static Random random = new Random();
-
   final long frequency;
-  long count = random.nextLong();
+  long count = ThreadLocalRandom.current().nextLong();
 
   public CountSampler(HTraceConfiguration conf) {
     this.frequency = Long.parseLong(conf.get(SAMPLER_FREQUENCY_CONF_KEY), 10);

http://git-wip-us.apache.org/repos/asf/incubator-htrace/blob/ab8dfe25/htrace-core/src/main/java/org/apache/htrace/impl/MilliSpan.java
----------------------------------------------------------------------
diff --git a/htrace-core/src/main/java/org/apache/htrace/impl/MilliSpan.java 
b/htrace-core/src/main/java/org/apache/htrace/impl/MilliSpan.java
index c688858..8544867 100644
--- a/htrace-core/src/main/java/org/apache/htrace/impl/MilliSpan.java
+++ b/htrace-core/src/main/java/org/apache/htrace/impl/MilliSpan.java
@@ -41,6 +41,7 @@ import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 import java.util.Random;
+import java.util.concurrent.ThreadLocalRandom;
 
 /**
  * A Span implementation that stores its information in milliseconds since the
@@ -63,10 +64,10 @@ public class MilliSpan implements Span {
   private Map<String, String> traceInfo = null;
   private String processId;
   private List<TimelineAnnotation> timeline = null;
-  private final static Random random = new Random();
 
   private static long nonZeroRandom64() {
     long id;
+    Random random = ThreadLocalRandom.current();
     do {
       id = random.nextLong();
     } while (id == 0);

http://git-wip-us.apache.org/repos/asf/incubator-htrace/blob/ab8dfe25/htrace-core/src/main/java/org/apache/htrace/impl/ProbabilitySampler.java
----------------------------------------------------------------------
diff --git 
a/htrace-core/src/main/java/org/apache/htrace/impl/ProbabilitySampler.java 
b/htrace-core/src/main/java/org/apache/htrace/impl/ProbabilitySampler.java
index 3c08c84..e6e4894 100644
--- a/htrace-core/src/main/java/org/apache/htrace/impl/ProbabilitySampler.java
+++ b/htrace-core/src/main/java/org/apache/htrace/impl/ProbabilitySampler.java
@@ -22,6 +22,7 @@ import org.apache.htrace.HTraceConfiguration;
 import org.apache.htrace.Sampler;
 
 import java.util.Random;
+import java.util.concurrent.ThreadLocalRandom;
 
 /**
  * Sampler that returns true a certain percentage of the time. Specify the 
frequency interval by
@@ -30,7 +31,6 @@ import java.util.Random;
 public class ProbabilitySampler implements Sampler<Object> {
   private static final Log LOG = LogFactory.getLog(ProbabilitySampler.class);
   public final double threshold;
-  private Random random = new Random();
   public final static String SAMPLER_FRACTION_CONF_KEY = "sampler.fraction";
 
   public ProbabilitySampler(HTraceConfiguration conf) {
@@ -43,6 +43,6 @@ public class ProbabilitySampler implements Sampler<Object> {
 
   @Override
   public boolean next(Object info) {
-    return random.nextDouble() < threshold;
+    return ThreadLocalRandom.current().nextDouble() < threshold;
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-htrace/blob/ab8dfe25/htrace-core/src/test/java/org/apache/htrace/TraceCreator.java
----------------------------------------------------------------------
diff --git a/htrace-core/src/test/java/org/apache/htrace/TraceCreator.java 
b/htrace-core/src/test/java/org/apache/htrace/TraceCreator.java
index f79b01a..7ec6309 100644
--- a/htrace-core/src/test/java/org/apache/htrace/TraceCreator.java
+++ b/htrace-core/src/test/java/org/apache/htrace/TraceCreator.java
@@ -18,6 +18,7 @@ package org.apache.htrace;
 
 import java.util.Collection;
 import java.util.Random;
+import java.util.concurrent.ThreadLocalRandom;
 
 import org.apache.htrace.Sampler;
 import org.apache.htrace.SpanReceiver;
@@ -80,7 +81,7 @@ public class TraceCreator {
   public void createThreadedTrace() {
     TraceScope s = Trace.startSpan(THREADED_TRACE_ROOT, Sampler.ALWAYS);
     try {
-      Random r = new Random();
+      Random r = ThreadLocalRandom.current();
       int numThreads = r.nextInt(4) + 1;
       Thread[] threads = new Thread[numThreads];
 
@@ -130,7 +131,7 @@ public class TraceCreator {
     public void run() {
       try {
         Thread.sleep(750);
-        Random r = new Random();
+        Random r = ThreadLocalRandom.current();
         int importantNumber = 100 / r.nextInt(3);
         System.out.println("Important number: " + importantNumber);
       } catch (InterruptedException ie) {

Reply via email to