Skip to content

Large flag performance test - #76

Open
leoromanovsky wants to merge 4 commits into
mainfrom
lr/large-flag-test
Open

Large flag performance test#76
leoromanovsky wants to merge 4 commits into
mainfrom
lr/large-flag-test

Conversation

@leoromanovsky

@leoromanovsky leoromanovsky commented Oct 29, 2025

Copy link
Copy Markdown
Member

🎟️ Fixes issue
📜 Design Doc: link if applicable

Motivation and Context

We need a test bench to compare improvements for SDK startup time when huge flag payloads are delivered.

Eppo-exp/sdk-test-data#139

The tests metrics collected aren't meaningful on their own; firstly we are running them on powerful M-series laptops or cloud computers, compared with mobile devices. However the delta between implementation will be useful.

I wanted to have 10k flags, which is far more than our largest deployment, to demonstrate a clear separation with new implementations.

Description

Instantiated the SDK with a UFC containing 10k flags and performs 50k evaluations; it is not concerned with correctness just measuring startup time and evaluation throughput.

We will compare this with an implementation based on flatbuffers to demonstrate:

  • Faster startup
  • No meaningful impact on evaluation throughput

How has this been documented?

How has this been tested?

🚀 Starting JSON Performance Benchmark
🎯 Key Focus: Startup performance (JSON->objects conversion)
📊 Secondary: Evaluation performance across test cases

📦 Data loaded: 53 MB + 12 test cases (10.07ms)

🔄 Benchmarking JSON Mode...
   🏁 Starting JSON->objects conversion...
   ⚡ Startup complete: 2175ms, Memory: +394MB
   🏃 Running evaluation performance benchmark across all flags...
   📊 Testing 10000 flags with 5 subjects each...
   ✅ Evaluations complete: 50000 in 485ms
   📈 Performance: 103123 evals/sec

🏆 PERFORMANCE BENCHMARK RESULTS:
📊 JSON Mode:
   🎯 Startup (KEY METRIC): 2175ms
   ⚡ Evaluation Speed: 103123 evals/sec
   💾 Memory Usage: 465MB
   📊 Total Evaluations: 50000

🎯 JSON Performance Benchmark completed!
   Ready for FlatBuffer comparison when implemented

Comment thread Makefile
tempDir := ${testDataDir}temp/
gitDataDir := ${tempDir}sdk-test-data/
branchName := main
branchName := lr/very-large-flag

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

not planning on merging this, of course

@leoromanovsky
leoromanovsky marked this pull request as ready for review October 29, 2025 18:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant