Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/maraisr/tctx
Blazing fast w3c Trace Contexts for any JS runtime
https://github.com/maraisr/tctx
distributed-tracing tracecontext traceparent w3c-trace-context
Last synced: 2 days ago
JSON representation
Blazing fast w3c Trace Contexts for any JS runtime
- Host: GitHub
- URL: https://github.com/maraisr/tctx
- Owner: maraisr
- License: mit
- Created: 2021-11-18T07:47:48.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2025-01-17T23:35:21.000Z (about 1 month ago)
- Last Synced: 2025-02-10T01:14:24.466Z (11 days ago)
- Topics: distributed-tracing, tracecontext, traceparent, w3c-trace-context
- Language: TypeScript
- Homepage:
- Size: 223 KB
- Stars: 21
- Watchers: 3
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
- License: license
Awesome Lists containing this project
- awesome-blazingly-fast - tctx - Blazing fast traceparents for use in w3c Trace Context (TypeScript)
README
# trace context [](https://licenses.dev/npm/tctx) [](https://w3c.github.io/trace-context/)
**W3C [Trace Context](https://w3c.github.io/trace-context/)'s made simple**
This is free to use software, but if you do like it, consider supporting me ❤️
[](https://github.com/sponsors/maraisr)
[](https://www.buymeacoffee.com/marais)## ⚙️ Install
- **npm** — available as [`tctx`](https://www.npmjs.com/package/tctx)
- **JSR** — available as [`@mr/tracecontext`](https://jsr.io/@mr/tracecontext)## 🚀 Usage
```ts
// producerimport * as traceparent from 'tctx/traceparent';
import * as tracestate from 'tctx/tracestate';fetch('/api', {
headers: {
traceparent: traceparent.make(),
tracestate: tracestate.make({ key: 'value' }),
},
});// consumer
import * as traceparent from 'tctx/traceparent';
import * as tracestate from 'tctx/tracestate';const parent = traceparent.parse(request.headers.traceparent);
const state = tracestate.parse(request.headers.tracestate);
state.set('vendor', 'value');fetch('/downstream', {
headers: {
traceparent: parent.child(),
tracestate: state,
},
});
```## 💨 Benchmark
```
benchmark time (avg) iter/s (min … max) p75 p99 p995
------------------------------------------------------------------- -----------------------------group make
tctx 488.04 ns/iter 2,049,021.8 (477.8 ns … 540.92 ns) 490.45 ns 527.86 ns 540.92 ns
traceparent 6.08 µs/iter 164,346.2 (5.88 µs … 6.46 µs) 6.17 µs 6.46 µs 6.46 µs
trace-context 1.35 µs/iter 743,381.3 (1.33 µs … 1.46 µs) 1.35 µs 1.46 µs 1.46 µssummary
tctx
2.76x faster than trace-context
12.47x faster than traceparentgroup parse
tctx 265.57 ns/iter 3,765,435.2 (260.82 ns … 285.88 ns) 269.13 ns 273.34 ns 285.88 ns
traceparent 5.09 µs/iter 196,302.6 (4.88 µs … 5.36 µs) 5.18 µs 5.36 µs 5.36 µs
trace-context 240.18 ns/iter 4,163,540.7 (237.21 ns … 300.23 ns) 238.89 ns 276.17 ns 297.94 nssummary
trace-context
1.11x faster than tctx
21.21x faster than traceparentgroup child
tctx 724.74 ns/iter 1,379,804.8 (709.77 ns … 752.56 ns) 733.47 ns 752.56 ns 752.56 ns
traceparent 8.18 µs/iter 122,254.2 (7.99 µs … 8.77 µs) 8.24 µs 8.77 µs 8.77 µs
trace-context 1.99 µs/iter 502,728.4 (1.96 µs … 2.05 µs) 1.99 µs 2.05 µs 2.05 µssummary
tctx
2.74x faster than trace-context
11.29x faster than traceparent
```## License
MIT © [Marais Rossouw](https://marais.io)