Skip to content

Commit 0b224de

Browse files
committed
feat: performance improvements
Signed-off-by: Simon Schrottner <[email protected]>
1 parent 52cbaa7 commit 0b224de

File tree

3 files changed

+33
-18
lines changed

3 files changed

+33
-18
lines changed

src/main/java/dev/openfeature/sdk/HookContextWithoutData.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,9 @@
33
import lombok.AccessLevel;
44
import lombok.Builder;
55
import lombok.Data;
6-
import lombok.Getter;
76
import lombok.NonNull;
87
import lombok.Setter;
9-
import lombok.Value;
108
import lombok.With;
11-
import lombok.experimental.NonFinal;
129

1310
/**
1411
* A data class to hold immutable context that {@link Hook} instances use.

src/main/java/dev/openfeature/sdk/HookSupport.java

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -75,9 +75,7 @@ private <T> void executeHooks(
7575
for (Pair<Hook, HookData> hookDataPair : hookDataPairs) {
7676
Hook hook = hookDataPair.getLeft();
7777
HookData hookData = hookDataPair.getRight();
78-
if (hook.supportsFlagValueType(flagValueType)) {
79-
executeChecked(hook, hookData, hookContext, hookCode, hookMethod);
80-
}
78+
executeChecked(hook, hookData, hookContext, hookCode, hookMethod);
8179
}
8280
}
8381
}
@@ -111,10 +109,8 @@ private <T> void executeHooksUnchecked(
111109
for (Pair<Hook, HookData> hookDataPair : hookDataPairs) {
112110
Hook hook = hookDataPair.getLeft();
113111
HookData hookData = hookDataPair.getRight();
114-
if (hook.supportsFlagValueType(flagValueType)) {
115-
var hookCtxWithData = HookContextWithData.of(hookContext, hookData);
116-
hookCode.accept(hook, hookCtxWithData);
117-
}
112+
var hookCtxWithData = HookContextWithData.of(hookContext, hookData);
113+
hookCode.accept(hook, hookCtxWithData);
118114
}
119115
}
120116
}
@@ -133,14 +129,12 @@ private EvaluationContext callBeforeHooks(
133129
Hook hook = hookDataPair.getLeft();
134130
HookData hookData = hookDataPair.getRight();
135131

136-
if (hook.supportsFlagValueType(flagValueType)) {
137-
// Create a new context with this hook's data
138-
HookContext contextWithHookData = HookContextWithData.of(hookCtx, hookData);
139-
Optional<EvaluationContext> optional = Optional.ofNullable(hook.before(contextWithHookData, hints))
140-
.orElse(Optional.empty());
141-
if (optional.isPresent()) {
142-
context = context.merge(optional.get());
143-
}
132+
// Create a new context with this hook's data
133+
HookContext contextWithHookData = HookContextWithData.of(hookCtx, hookData);
134+
Optional<EvaluationContext> optional =
135+
Optional.ofNullable(hook.before(contextWithHookData, hints)).orElse(Optional.empty());
136+
if (optional.isPresent()) {
137+
context = context.merge(optional.get());
144138
}
145139
}
146140
return context;

src/test/java/dev/openfeature/sdk/benchmark/AllocationBenchmark.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,30 @@ public Optional<EvaluationContext> before(HookContext<Object> ctx, Map<String, O
5454
return Optional.ofNullable(new ImmutableContext());
5555
}
5656
});
57+
client.addHooks(new Hook<String>() {
58+
@Override
59+
public Optional<EvaluationContext> before(HookContext<String> ctx, Map<String, Object> hints) {
60+
return Optional.ofNullable(new ImmutableContext());
61+
}
62+
});
63+
client.addHooks(new Hook<Boolean>() {
64+
@Override
65+
public Optional<EvaluationContext> before(HookContext<Boolean> ctx, Map<String, Object> hints) {
66+
return Optional.ofNullable(new ImmutableContext());
67+
}
68+
});
69+
client.addHooks(new Hook<Integer>() {
70+
@Override
71+
public Optional<EvaluationContext> before(HookContext<Integer> ctx, Map<String, Object> hints) {
72+
return Optional.ofNullable(new ImmutableContext());
73+
}
74+
});
75+
client.addHooks(new Hook<Double>() {
76+
@Override
77+
public Optional<EvaluationContext> before(HookContext<Double> ctx, Map<String, Object> hints) {
78+
return Optional.ofNullable(new ImmutableContext());
79+
}
80+
});
5781

5882
Map<String, Value> invocationAttrs = new HashMap<>();
5983
invocationAttrs.put("invoke", new Value(3));

0 commit comments

Comments
 (0)