Performance results
The charts below show the performance benchmarks for the Dapr APIs on this version of Dapr, per API. Each section leads with a throughput per resource table (iterations/sec against the CPU and memory consumed by the app and its Dapr sidecar combined) followed by the latency, throughput, resource and data-volume charts for every scenario.
To view the results for a different Dapr version, use the version selector at the top of the docs.
How this data is produced
Benchmarks run in the dapr-perf suite for each Dapr release. The raw report is the source of truth and is committed to the dapr/dapr repository; the rendered charts are published to the perf-charts branch and pulled into this page automatically. Nothing on this page is version-specific, the results shown always match the Dapr version you are viewing.
Test environment: Azure AKS, 3x Standard_D2s_v6 (2 vCPU, 8 GiB) Linux nodes. Results for Dapr v1.18.0.
Service invocation (2 scenarios)
HTTP
Throughput per resource
Iterations/sec relative to the CPU and memory consumed by the app and its Dapr sidecar combined. Resource figures are point-in-time samples taken at the end of each run.
| Test | Iterations/sec | App CPU (m) | App Mem (MB) | Sidecar CPU (m) | Sidecar Mem (MB) | Iter/s per core | Iter/s per GB |
|---|---|---|---|---|---|---|---|
| TestServiceInvocationHTTPPerformance | 999.97 | 43 | 14 | 17 | 48 | 16666.1 | 16482.6 |
TestServiceInvocationHTTPPerformance (14 charts)

gRPC
Throughput per resource
Iterations/sec relative to the CPU and memory consumed by the app and its Dapr sidecar combined. Resource figures are point-in-time samples taken at the end of each run.
| Test | Iterations/sec | App CPU (m) | App Mem (MB) | Sidecar CPU (m) | Sidecar Mem (MB) | Iter/s per core | Iter/s per GB |
|---|---|---|---|---|---|---|---|
| TestServiceInvocationGrpcPerformance | 999.96 | 91 | 14 | 51 | 49 | 7042.0 | 16075.5 |
TestServiceInvocationGrpcPerformance (9 charts)

State management (2 scenarios)
HTTP
Throughput per resource
Iterations/sec relative to the CPU and memory consumed by the app and its Dapr sidecar combined. Resource figures are point-in-time samples taken at the end of each run.
| Test | Iterations/sec | App CPU (m) | App Mem (MB) | Sidecar CPU (m) | Sidecar Mem (MB) | Iter/s per core | Iter/s per GB |
|---|---|---|---|---|---|---|---|
| TestStateGetHTTPPerformance | 999.97 | 87 | 30 | 94 | 49 | 5524.7 | 13024.5 |
TestStateGetHTTPPerformance (14 charts)

gRPC
Throughput per resource
Iterations/sec relative to the CPU and memory consumed by the app and its Dapr sidecar combined. Resource figures are point-in-time samples taken at the end of each run.
| Test | Iterations/sec | App CPU (m) | App Mem (MB) | Sidecar CPU (m) | Sidecar Mem (MB) | Iter/s per core | Iter/s per GB |
|---|---|---|---|---|---|---|---|
| TestStateGetGrpcPerformance | 999.98 | 15 | 30 | 4 | 44 | 52630.7 | 13824.2 |
TestStateGetGrpcPerformance (9 charts)

Publish and subscribe (14 scenarios)
HTTP
TestPubsubPublishHttpPerformance (6 charts)

gRPC
Throughput per resource
Iterations/sec relative to the CPU and memory consumed by the app and its Dapr sidecar combined. Resource figures are point-in-time samples taken at the end of each run.
| Test | Iterations/sec | App CPU (m) | App Mem (MB) | Sidecar CPU (m) | Sidecar Mem (MB) | Iter/s per core | Iter/s per GB |
|---|---|---|---|---|---|---|---|
| TestPubsubPublishGrpcPerformance | 999.98 | 86 | 33 | 106 | 51 | 5208.3 | 12113.4 |
TestPubsubPublishGrpcPerformance (9 charts)

Bulk / HTTP
Throughput per resource
Iterations/sec relative to the CPU and memory consumed by the app and its Dapr sidecar combined. Resource figures are point-in-time samples taken at the end of each run.
| Test | Iterations/sec | App CPU (m) | App Mem (MB) | Sidecar CPU (m) | Sidecar Mem (MB) | Iter/s per core | Iter/s per GB |
|---|---|---|---|---|---|---|---|
| TestPubsubBulkPublishSubscribeHttpPerformance_kafka-messagebus | 67.55 | 24 | 19 | 2 | 37 | 2598.2 | 1230.4 |
TestPubsubBulkPublishBulkSubscribeHttpPerformance_kafka-messagebus (8 charts)

TestPubsubBulkPublishHttpPerformance_memory-broker_b100_s1KB_bulk (6 charts)

TestPubsubBulkPublishHttpPerformance_memory-broker_b100_s1KB_normal (6 charts)

TestPubsubBulkPublishHttpPerformance_memory-broker_b10_s1KB_bulk (6 charts)

TestPubsubBulkPublishHttpPerformance_memory-broker_b10_s1KB_normal (6 charts)

TestPubsubBulkPublishHttpPerformance_variants_duration (1 chart)

TestPubsubBulkPublishSubscribeHttpPerformance_kafka-messagebus (8 charts)

Bulk / gRPC
Throughput per resource
Iterations/sec relative to the CPU and memory consumed by the app and its Dapr sidecar combined. Resource figures are point-in-time samples taken at the end of each run.
| Test | Iterations/sec | App CPU (m) | App Mem (MB) | Sidecar CPU (m) | Sidecar Mem (MB) | Iter/s per core | Iter/s per GB |
|---|---|---|---|---|---|---|---|
| TestBulkPubsubPublishGrpcPerformance_In-memory_with_with_cloud_event | 199.94 | 476 | 41 | 1126 | 77 | 124.8 | 1726.1 |
| TestBulkPubsubPublishGrpcPerformance_In-memory_without_cloud_event_(raw_payload) | 199.95 | 372 | 44 | 1000 | 76 | 145.7 | 1701.8 |
| TestBulkPubsubPublishGrpcPerformance_Kafka_with_cloud_event | 199.94 | 564 | 42 | 1676 | 94 | 89.3 | 1497.7 |
| TestBulkPubsubPublishGrpcPerformance_Kafka_without_cloud_event_(raw_payload) | 199.94 | 758 | 43 | 1545 | 94 | 86.8 | 1493.1 |
TestBulkPubsubPublishGrpcPerformance_In-memory_with_with_cloud_event (9 charts)

TestBulkPubsubPublishGrpcPerformance_In-memory_without_cloud_event_(raw_payload) (9 charts)

TestBulkPubsubPublishGrpcPerformance_Kafka_with_cloud_event (9 charts)

TestBulkPubsubPublishGrpcPerformance_Kafka_without_cloud_event_(raw_payload) (9 charts)

TestBulkPubsubPublishGrpcPerformance_variants_duration (1 chart)

Actors (5 scenarios)
Throughput per resource
Iterations/sec relative to the CPU and memory consumed by the app and its Dapr sidecar combined. Resource figures are point-in-time samples taken at the end of each run.
| Test | Iterations/sec | App CPU (m) | App Mem (MB) | Sidecar CPU (m) | Sidecar Mem (MB) | Iter/s per core | Iter/s per GB |
|---|---|---|---|---|---|---|---|
| TestActorActivate | 499.98 | 662 | 891 | 106 | 65 | 651.0 | 535.6 |
| TestActorDoubleActivation | 770.87 | 206 | 14 | 419 | 204 | 1233.4 | 3614.8 |
| TestActorIdStress | 13497.43 | 101 | 35 | 413 | 241 | 26259.6 | 49935.8 |
| TestActorReminderRegistrationPerformance | 1415.09 | 1 | 8 | 29 | 56 | 47169.8 | 22794.7 |
| TestActorTimerWithStatePerformance | 219.98 | 138 | 1192 | 155 | 65 | 750.8 | 179.2 |
TestActorActivate (13 charts)

TestActorDoubleActivation (8 charts)

TestActorIdStress (8 charts)

TestActorReminderRegistrationPerformance (14 charts)

TestActorTimerWithStatePerformance (14 charts)

Workflows (6 scenarios)
Throughput per resource
Iterations/sec relative to the CPU and memory consumed by the app and its Dapr sidecar combined. Resource figures are point-in-time samples taken at the end of each run.
| Test | Iterations/sec | App CPU (m) | App Mem (MB) | Sidecar CPU (m) | Sidecar Mem (MB) | Iter/s per core | Iter/s per GB |
|---|---|---|---|---|---|---|---|
| TestDelayWorkflowsAtScale | 35.58 | 402 | 939 | 162 | 101 | 63.1 | 35.0 |
| TestParallelWorkflowWithMaxVUs | 110.24 | 14 | 608 | 2 | 36 | 6890.0 | 175.3 |
| TestSeriesWorkflowWithMaxVUs | 92.97 | 13 | 610 | 2 | 39 | 6197.7 | 146.7 |
| TestWorkflowWithConstantIterations | 62.62 | 14 | 608 | 2 | 37 | 3834.1 | 99.5 |
| TestWorkflowWithConstantVUs | 53.41 | 58 | 626 | 3 | 49 | 875.6 | 81.0 |
| TestWorkflowWithDifferentPayloads | 9.29 | 19 | 616 | 2 | 35 | 442.6 | 14.6 |
TestDelayWorkflowsAtScale (8 charts)

TestParallelWorkflowWithMaxVUs (8 charts)

TestSeriesWorkflowWithMaxVUs (8 charts)

TestWorkflowWithConstantIterations (9 charts)

TestWorkflowWithConstantVUs (9 charts)

TestWorkflowWithDifferentPayloads (9 charts)

Jobs (1 scenario)
Throughput per resource
Iterations/sec relative to the CPU and memory consumed by the app and its Dapr sidecar combined. Resource figures are point-in-time samples taken at the end of each run.
| Test | Iterations/sec | App CPU (m) | App Mem (MB) | Sidecar CPU (m) | Sidecar Mem (MB) | Iter/s per core | Iter/s per GB |
|---|---|---|---|---|---|---|---|
| TestJobSchedulingPerformance | 870.79 | 62 | 27 | 102 | 80 | 5309.7 | 8344.7 |
TestJobSchedulingPerformance (14 charts)

Configuration (4 scenarios)
HTTP
Throughput per resource
Iterations/sec relative to the CPU and memory consumed by the app and its Dapr sidecar combined. Resource figures are point-in-time samples taken at the end of each run.
| Test | Iterations/sec | App CPU (m) | App Mem (MB) | Sidecar CPU (m) | Sidecar Mem (MB) | Iter/s per core | Iter/s per GB |
|---|---|---|---|---|---|---|---|
| TestConfigurationGetHTTPPerformance | 9697.99 | 1 | 39 | 2 | 35 | 3232664.4 | 132479.0 |
| TestConfigurationSubscribeHTTPPerformance | 2074.52 | 1 | 73 | 57 | 87 | 35767.6 | 13307.4 |
TestConfigurationGetHTTPPerformance (8 charts)

TestConfigurationSubscribeHTTPPerformance (8 charts)

gRPC
Throughput per resource
Iterations/sec relative to the CPU and memory consumed by the app and its Dapr sidecar combined. Resource figures are point-in-time samples taken at the end of each run.
| Test | Iterations/sec | App CPU (m) | App Mem (MB) | Sidecar CPU (m) | Sidecar Mem (MB) | Iter/s per core | Iter/s per GB |
|---|---|---|---|---|---|---|---|
| TestConfigurationGetGRPCPerformance | 14369.91 | 1 | 73 | 1 | 76 | 7184956.9 | 99023.6 |
| TestConfigurationSubscribeGRPCPerformance | 4038.77 | 1 | 83 | 2 | 75 | 1346257.7 | 26268.1 |
TestConfigurationGetGRPCPerformance (8 charts)

TestConfigurationSubscribeGRPCPerformance (8 charts)
