/
tracer.js
71 lines (65 loc) · 2.1 KB
/
tracer.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
'use strict';
const benchmark = require('./benchmark');
const opentelemetry = require('../packages/opentelemetry-api');
const { BasicTracerProvider, BatchSpanProcessor, InMemorySpanExporter, SimpleSpanProcessor } = require('../packages/opentelemetry-sdk-trace-base');
// Clear any previous global logger
opentelemetry.diag.setLogger();
const setups = [
{
name: 'NoopTracerProvider',
provider: new opentelemetry.NoopTracerProvider()
},
{
name: 'BasicTracerProvider',
provider: new BasicTracerProvider()
},
{
name: 'BasicTracerProvider with SimpleSpanProcessor',
provider: getProvider(new SimpleSpanProcessor(new InMemorySpanExporter()))
},
{
name: 'BasicTracerProvider with BatchSpanProcessor',
provider: getProvider(new BatchSpanProcessor(new InMemorySpanExporter()))
}
];
for (const setup of setups) {
console.log(`Beginning ${setup.name} Benchmark...`);
const tracer = setup.provider.getTracer("benchmark");
const suite = benchmark(20)
.add('#startSpan', function () {
const span = tracer.startSpan('op');
span.end();
})
.add('#startSpan:parent', function () {
const span = tracer.startSpan('op');
const childSpan = tracer.startSpan('client-op', { parent: span });
childSpan.end();
span.end();
})
.add('#startSpan with attribute', function () {
const span = tracer.startSpan('op');
span.setAttribute('attr-key-one', 'attr-value-one');
span.end();
})
.add('#startSpan with 30 attributes', function () {
const span = tracer.startSpan('op');
for (let j = 0; j < 30; j++) {
span.setAttribute('attr-key-' + j, 'attr-value-' + j);
}
span.end();
})
.add('#startSpan with 100 attributes', function () {
const span = tracer.startSpan('op');
for (let j = 0; j < 100; j++) {
span.setAttribute('attr-key-' + j, 'attr-value-' + j);
}
span.end();
});
// run async
suite.run({ async: false });
}
function getProvider(processor) {
const provider = new BasicTracerProvider();
provider.addSpanProcessor(processor);
return provider;
}