Skip to content

Commit 5448e75

Browse files
tvaron3Copilot
andcommitted
perf(cosmos): add __slots__ to _PartitionHealthInfo + comments on Range __slots__
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 parent 2cd31c6 commit 5448e75

2 files changed

Lines changed: 14 additions & 2 deletions

File tree

sdk/cosmos/azure-cosmos/azure/cosmos/_partition_health_tracker.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,17 @@ class _PartitionHealthInfo(object):
5050
"""
5151
This internal class keeps the health and statistics for a partition.
5252
"""
53+
# __slots__ reduces per-instance memory by using a fixed-size C array
54+
# instead of a per-instance __dict__. Significant when tracking many partitions.
55+
__slots__ = (
56+
'write_failure_count',
57+
'read_failure_count',
58+
'write_success_count',
59+
'read_success_count',
60+
'read_consecutive_failure_count',
61+
'write_consecutive_failure_count',
62+
'unavailability_info',
63+
)
5364

5465
def __init__(self) -> None:
5566
self.write_failure_count: int = 0

sdk/cosmos/azure-cosmos/azure/cosmos/_routing/routing_range.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,9 @@ class PartitionKeyRange(object):
6262

6363

6464
class Range(object):
65-
"""description of class"""
66-
65+
"""Range of a partition key."""
66+
# __slots__ reduces per-instance memory from ~250 bytes to ~64 bytes.
67+
# Significant when 100K+ partition ranges are cached per client.
6768
__slots__ = ('min', 'max', 'isMinInclusive', 'isMaxInclusive')
6869

6970
MinPath = "min"

0 commit comments

Comments
 (0)