Skip to content

Commit 223b4f6

Browse files
authored
Merge pull request #292 from tmancill/faster-uuid
Replace UUID.randomUUID() with a faster implementation
2 parents 46d5134 + 86cdd6c commit 223b4f6

File tree

7 files changed

+22
-15
lines changed

7 files changed

+22
-15
lines changed

telemetry-core/src/main/java/com/newrelic/telemetry/TelemetryBatch.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
/** Represents a collection of {@link Telemetry} instances and some common attributes */
1717
public abstract class TelemetryBatch<T extends Telemetry> {
1818

19-
private final UUID uuid = UUID.randomUUID();
19+
private final UUID uuid = Utils.generateUUID();
2020
private Collection<T> telemetry;
2121

2222
private Attributes commonAttributes;

telemetry-core/src/main/java/com/newrelic/telemetry/util/Utils.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@
44
*/
55
package com.newrelic.telemetry.util;
66

7+
import java.util.UUID;
8+
import java.util.concurrent.ThreadLocalRandom;
9+
710
/** A class with helper functions */
811
public class Utils {
912

@@ -25,4 +28,8 @@ public static String verifyNonBlank(String input, String message)
2528
public static <E> E verifyNonNull(E input) throws IllegalArgumentException {
2629
return verifyNonNull(input, "input cannot be null");
2730
}
31+
32+
public static UUID generateUUID() {
33+
return new UUID(ThreadLocalRandom.current().nextLong(), ThreadLocalRandom.current().nextLong());
34+
}
2835
}

telemetry-core/src/test/java/com/newrelic/telemetry/TelemetryClientTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import com.newrelic.telemetry.spans.Span;
3333
import com.newrelic.telemetry.spans.SpanBatch;
3434
import com.newrelic.telemetry.spans.SpanBatchSender;
35+
import com.newrelic.telemetry.util.Utils;
3536
import java.net.URI;
3637
import java.net.URL;
3738
import java.util.ArrayList;
@@ -41,7 +42,6 @@
4142
import java.util.HashMap;
4243
import java.util.List;
4344
import java.util.Map;
44-
import java.util.UUID;
4545
import java.util.concurrent.CountDownLatch;
4646
import java.util.concurrent.TimeUnit;
4747
import java.util.concurrent.atomic.AtomicBoolean;
@@ -352,7 +352,7 @@ private MetricBatch makeBatchOf3Metrics() {
352352

353353
private static Metric makeMetric() {
354354
return new Count(
355-
UUID.randomUUID().toString(),
355+
Utils.generateUUID().toString(),
356356
99,
357357
System.currentTimeMillis() - 100,
358358
System.currentTimeMillis(),

telemetry_examples/src/main/java/com/newrelic/telemetry/examples/LogExample.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,11 @@
1111
import com.newrelic.telemetry.logs.LogBatch;
1212
import com.newrelic.telemetry.logs.LogBatchSender;
1313
import com.newrelic.telemetry.util.IngestWarnings;
14+
import com.newrelic.telemetry.util.Utils;
1415
import java.util.ArrayList;
1516
import java.util.Arrays;
1617
import java.util.List;
1718
import java.util.Random;
18-
import java.util.UUID;
1919
import java.util.concurrent.ThreadLocalRandom;
2020
import org.slf4j.Logger;
2121
import org.slf4j.LoggerFactory;
@@ -53,7 +53,7 @@ public static void main(String[] args) throws Exception {
5353
List<Log> logs = new ArrayList<>();
5454
logs.add(Log.builder().level("INFO").message("Start of process").build());
5555
for (String item : items) {
56-
String logId = UUID.randomUUID().toString();
56+
String logId = Utils.generateUUID().toString();
5757
Attributes attributes = new Attributes().put("id", logId).put("food", item);
5858
Log log =
5959
Log.builder().attributes(attributes).message("Processing " + item).level("DEBUG").build();

telemetry_examples/src/main/java/com/newrelic/telemetry/examples/SpanExample.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@
1010
import com.newrelic.telemetry.spans.Span;
1111
import com.newrelic.telemetry.spans.SpanBatch;
1212
import com.newrelic.telemetry.spans.SpanBatchSender;
13+
import com.newrelic.telemetry.util.Utils;
1314
import java.util.ArrayList;
1415
import java.util.Arrays;
1516
import java.util.List;
16-
import java.util.UUID;
1717
import java.util.concurrent.ThreadLocalRandom;
1818
import org.slf4j.Logger;
1919
import org.slf4j.LoggerFactory;
@@ -47,13 +47,13 @@ public static void main(String[] args) throws Exception {
4747
.build());
4848

4949
List<Span> spans = new ArrayList<>();
50-
String traceId = UUID.randomUUID().toString();
50+
String traceId = Utils.generateUUID().toString();
5151
long spanStartTime = System.currentTimeMillis();
5252
String parentId = null;
5353
for (String item : items) {
5454
int durationMs = random.nextInt(1000);
5555

56-
String spanId = UUID.randomUUID().toString();
56+
String spanId = Utils.generateUUID().toString();
5757
spans.add(
5858
Span.builder(spanId)
5959
.traceId(traceId)

telemetry_examples/src/main/java/com/newrelic/telemetry/examples/SpanToTraceObserverExample.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,12 @@
77
import com.newrelic.telemetry.spans.Span;
88
import com.newrelic.telemetry.spans.SpanBatch;
99
import com.newrelic.telemetry.spans.SpanBatchSender;
10+
import com.newrelic.telemetry.util.Utils;
1011
import java.net.MalformedURLException;
1112
import java.net.URL;
1213
import java.util.ArrayList;
1314
import java.util.Arrays;
1415
import java.util.List;
15-
import java.util.UUID;
1616
import java.util.concurrent.ThreadLocalRandom;
1717
import org.slf4j.Logger;
1818
import org.slf4j.LoggerFactory;
@@ -42,12 +42,12 @@ public static void main(String[] args) throws ResponseException, MalformedURLExc
4242
.build());
4343

4444
List<Span> spans = new ArrayList<>();
45-
String traceId = UUID.randomUUID().toString();
45+
String traceId = Utils.generateUUID().toString();
4646
long spanStartTime = System.currentTimeMillis();
4747
String parentId = null;
4848
for (String item : items) {
4949
int durationMs = random.nextInt(1000);
50-
String spanId = UUID.randomUUID().toString();
50+
String spanId = Utils.generateUUID().toString();
5151
spans.add(
5252
Span.builder(spanId)
5353
.traceId(traceId)

telemetry_examples/src/main/java/com/newrelic/telemetry/examples/TelemetryClientExample.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,10 @@
2020
import com.newrelic.telemetry.metrics.Summary;
2121
import com.newrelic.telemetry.spans.Span;
2222
import com.newrelic.telemetry.spans.SpanBatch;
23+
import com.newrelic.telemetry.util.Utils;
2324
import java.net.InetAddress;
2425
import java.time.Duration;
2526
import java.time.temporal.ChronoUnit;
26-
import java.util.UUID;
2727

2828
/**
2929
* This example shows how to use the TelemetryClient to handle standard error conditions.
@@ -114,13 +114,13 @@ private static void sendSampleMetrics(
114114

115115
private static Span sendSampleSpan(TelemetryClient telemetryClient, Attributes commonAttributes) {
116116
Span sampleSpan =
117-
Span.builder(UUID.randomUUID().toString())
117+
Span.builder(Utils.generateUUID().toString())
118118
.timestamp(System.currentTimeMillis())
119-
.traceId(UUID.randomUUID().toString())
119+
.traceId(Utils.generateUUID().toString())
120120
.durationMs(150d)
121121
.name("testSpan")
122122
.build();
123-
String traceId = UUID.randomUUID().toString();
123+
String traceId = Utils.generateUUID().toString();
124124
SpanBatch spanBatch = new SpanBatch(singleton(sampleSpan), commonAttributes, traceId);
125125
telemetryClient.sendBatch(spanBatch);
126126
return sampleSpan;

0 commit comments

Comments
 (0)