Skip to content

Commit cd67f43

Browse files
authored
chore: Used Maps in place of Lists for faster Evaluation (#47)
1 parent 9c961d1 commit cd67f43

File tree

3 files changed

+13
-13
lines changed

3 files changed

+13
-13
lines changed

src/main/kotlin/com/featurevisor/sdk/DatafileReader.kt

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,14 @@ import com.featurevisor.types.Segment
99
import com.featurevisor.types.SegmentKey
1010

1111
class DatafileReader constructor(
12-
datafileJson: DatafileContent,
12+
datafileContent: DatafileContent,
1313
) {
1414

15-
private val schemaVersion: String = datafileJson.schemaVersion
16-
private val revision: String = datafileJson.revision
17-
private val attributes: List<Attribute> = datafileJson.attributes
18-
private val segments: List<Segment> = datafileJson.segments
19-
private val features: List<Feature> = datafileJson.features
15+
private val schemaVersion: String = datafileContent.schemaVersion
16+
private val revision: String = datafileContent.revision
17+
private val attributes: Map<AttributeKey, Attribute> = datafileContent.attributes.associateBy { it.key }
18+
private val segments: Map<SegmentKey, Segment> = datafileContent.segments.associateBy { it.key }
19+
private val features: Map<FeatureKey, Feature> = datafileContent.features.associateBy { it.key }
2020

2121
fun getRevision(): String {
2222
return revision
@@ -27,18 +27,18 @@ class DatafileReader constructor(
2727
}
2828

2929
fun getAllAttributes(): List<Attribute> {
30-
return attributes
30+
return attributes.values.toList()
3131
}
3232

3333
fun getAttribute(attributeKey: AttributeKey): Attribute? {
34-
return attributes.find { attribute -> attribute.key == attributeKey }
34+
return attributes[attributeKey]
3535
}
3636

3737
fun getSegment(segmentKey: SegmentKey): Segment? {
38-
return segments.find { segment -> segment.key == segmentKey }
38+
return segments[segmentKey]
3939
}
4040

4141
fun getFeature(featureKey: FeatureKey): Feature? {
42-
return features.find { feature -> feature.key == featureKey }
42+
return features[featureKey]
4343
}
4444
}

src/main/kotlin/com/featurevisor/sdk/Instance.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,14 +126,14 @@ class FeaturevisorInstance private constructor(options: InstanceOptions) {
126126
val data = datafileJSON.toByteArray(Charsets.UTF_8)
127127
try {
128128
val datafileContent = Json.decodeFromString<DatafileContent>(String(data))
129-
datafileReader = DatafileReader(datafileJson = datafileContent)
129+
datafileReader = DatafileReader(datafileContent = datafileContent)
130130
} catch (e: Exception) {
131131
logger?.error("could not parse datafile", mapOf("error" to e))
132132
}
133133
}
134134

135135
fun setDatafile(datafileContent: DatafileContent) {
136-
datafileReader = DatafileReader(datafileJson = datafileContent)
136+
datafileReader = DatafileReader(datafileContent = datafileContent)
137137
}
138138

139139
fun setStickyFeatures(stickyFeatures: StickyFeatures?) {

src/test/kotlin/com/featurevisor/sdk/DatafileReaderTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import org.junit.jupiter.api.Test
77
class DatafileReaderTest {
88

99
private val systemUnderTest = DatafileReader(
10-
datafileJson = DatafileContentFactory.get()
10+
datafileContent = DatafileContentFactory.get()
1111
)
1212

1313
@Test

0 commit comments

Comments
 (0)