Skip to content

Commit ae6e2ff

Browse files
authored
Predefine Vector Capacity for LogRecord Attributes (#1908)
1 parent ad990d6 commit ae6e2ff

File tree

3 files changed

+8
-3
lines changed

3 files changed

+8
-3
lines changed

opentelemetry-appender-tracing/benches/logs.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
| noop_layer_disabled | 12 ns |
1111
| noop_layer_enabled | 25 ns |
1212
| ot_layer_disabled | 19 ns |
13-
| ot_layer_enabled | 371 ns |
13+
| ot_layer_enabled | 305 ns |
1414
*/
1515

1616
use async_trait::async_trait;

opentelemetry-sdk/src/logs/log_emitter.rs

+6-1
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ pub struct LoggerProvider {
4040

4141
/// Default logger name if empty string is provided.
4242
const DEFAULT_COMPONENT_NAME: &str = "rust.opentelemetry.io/sdk/logger";
43+
const PREALLOCATED_ATTRIBUTE_CAPACITY: usize = 8;
4344

4445
impl opentelemetry::logs::LoggerProvider for LoggerProvider {
4546
type Logger = Logger;
@@ -246,7 +247,11 @@ impl opentelemetry::logs::Logger for Logger {
246247
type LogRecord = LogRecord;
247248

248249
fn create_log_record(&self) -> Self::LogRecord {
249-
LogRecord::default()
250+
// Reserve attributes memory for perf optimization. This may change in future.
251+
LogRecord {
252+
attributes: Some(Vec::with_capacity(PREALLOCATED_ATTRIBUTE_CAPACITY)),
253+
..Default::default()
254+
}
250255
}
251256

252257
/// Emit a `LogRecord`.

stress/src/logs.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
OS: Ubuntu 22.04.3 LTS (5.15.146.1-microsoft-standard-WSL2)
44
Hardware: AMD EPYC 7763 64-Core Processor - 2.44 GHz, 16vCPUs,
55
RAM: 64.0 GB
6-
53 M/sec
6+
69 M/sec
77
*/
88

99
use opentelemetry_appender_tracing::layer;

0 commit comments

Comments
 (0)