From bcf0900b58f449262556f80bff21e771a37272aa Mon Sep 17 00:00:00 2001 From: Sebastian Lorenz Date: Mon, 1 Jan 2024 19:41:41 +0100 Subject: [PATCH] Micro optimization to avoid inline creation & spreading of objects / arrays (#1847) --- .changeset/neat-geese-brush.md | 7 +++++++ packages/effect/src/internal/core-effect.ts | 12 +++++++----- packages/opentelemetry/src/NodeSdk.ts | 2 +- packages/opentelemetry/src/Resource.ts | 2 +- packages/opentelemetry/src/WebSdk.ts | 2 +- packages/platform/src/internal/http/clientRequest.ts | 2 +- 6 files changed, 18 insertions(+), 9 deletions(-) create mode 100644 .changeset/neat-geese-brush.md diff --git a/.changeset/neat-geese-brush.md b/.changeset/neat-geese-brush.md new file mode 100644 index 0000000000..f2219d0c1b --- /dev/null +++ b/.changeset/neat-geese-brush.md @@ -0,0 +1,7 @@ +--- +"@effect/opentelemetry": patch +"@effect/platform": patch +"effect": patch +--- + +Avoid inline creation & spreading of objects and arrays diff --git a/packages/effect/src/internal/core-effect.ts b/packages/effect/src/internal/core-effect.ts index dd9db103b2..24bff7234b 100644 --- a/packages/effect/src/internal/core-effect.ts +++ b/packages/effect/src/internal/core-effect.ts @@ -2033,11 +2033,13 @@ export const makeSpan = ( : Context.getOption(context, internalTracer.spanTag) const links = linksFromEnv._tag === "Some" ? - [ - ...Chunk.toReadonlyArray(linksFromEnv.value), - ...(options?.links ?? []) - ] : - options?.links ?? [] + options?.links !== undefined ? + [ + ...Chunk.toReadonlyArray(linksFromEnv.value), + ...options?.links ?? [] + ] : + Chunk.toReadonlyArray(linksFromEnv.value) : + options?.links ?? ReadonlyArray.empty() const span = tracer.span( name, diff --git a/packages/opentelemetry/src/NodeSdk.ts b/packages/opentelemetry/src/NodeSdk.ts index 6a5c50b075..d74121f455 100644 --- a/packages/opentelemetry/src/NodeSdk.ts +++ b/packages/opentelemetry/src/NodeSdk.ts @@ -44,7 +44,7 @@ export const layerTracerProvider = ( Effect.acquireRelease( Effect.sync(() => { const provider = new NodeTracerProvider({ - ...(config ?? {}), + ...(config ?? undefined), resource }) provider.addSpanProcessor(processor) diff --git a/packages/opentelemetry/src/Resource.ts b/packages/opentelemetry/src/Resource.ts index b803c6d044..8f7bd1a516 100644 --- a/packages/opentelemetry/src/Resource.ts +++ b/packages/opentelemetry/src/Resource.ts @@ -30,7 +30,7 @@ export const layer = (config: { readonly attributes?: Resources.ResourceAttributes }) => { const attributes = { - ...(config.attributes ?? {}), + ...(config.attributes ?? undefined), [SemanticResourceAttributes.SERVICE_NAME]: config.serviceName, [SemanticResourceAttributes.TELEMETRY_SDK_NAME]: "@effect/opentelemetry", [SemanticResourceAttributes.TELEMETRY_SDK_LANGUAGE]: typeof (globalThis as any).document === "undefined" diff --git a/packages/opentelemetry/src/WebSdk.ts b/packages/opentelemetry/src/WebSdk.ts index d33f2ffbc9..ee3eedcc23 100644 --- a/packages/opentelemetry/src/WebSdk.ts +++ b/packages/opentelemetry/src/WebSdk.ts @@ -44,7 +44,7 @@ export const layerTracerProvider = ( Effect.acquireRelease( Effect.sync(() => { const provider = new WebTracerProvider({ - ...(config ?? {}), + ...(config ?? undefined), resource }) provider.addSpanProcessor(processor) diff --git a/packages/platform/src/internal/http/clientRequest.ts b/packages/platform/src/internal/http/clientRequest.ts index 930f8ddb4b..1a4986fb0c 100644 --- a/packages/platform/src/internal/http/clientRequest.ts +++ b/packages/platform/src/internal/http/clientRequest.ts @@ -55,7 +55,7 @@ export const make: { modify(empty, { method, url, - ...(options ?? {}) + ...(options ?? undefined) }) /** @internal */