Add BasicType system with type-safe storage and configurable locking#4
Merged
Add BasicType system with type-safe storage and configurable locking#4
Conversation
🚀 MemoryMap Performance Benchmarks256-entry capacity with double hashing, Test Hardware: Apple M1 (Virtual), 7 GB RAM Core Operations
Load Factor Performance
Key Length Impact (100 ops)
Bulk Operations
Stress & Edge Cases
Persistence
Performance CharacteristicsMain Thread Budget
Target: 16.67ms/frame @ 60fps, 8.33ms/frame @ 120fps Capacity & Optimization
Total tests: 25 passed | Generated 2025-11-19 20:50:26 |
59d47d0 to
4f6a5da
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR introduces BasicType - a type-safe wrapper system for memory-mapped storage - along with major performance optimizations and architectural improvements to the MemoryMap library.
Key Features
BasicType System: Type-safe containers for Int, String, Double, Bool with three size variants:
BasicType8(BasicTypeNumber): 10 bytes - optimized for numeric typesBasicType64: 62 bytes - general purpose with short strings (~60 chars)BasicType1024: 1022 bytes - for longer strings (~1000 chars)Lock Abstraction: Flexible locking via
MemoryMapLockprotocolOSAllocatedUnfairLock(default) - high performanceNoLock- zero-cost for single-threaded useNSLock- standard Foundation lockPerformance Optimizations:
withUnsafeByteseliminates subscript overhead@inline(__always)on hot pathsArchitectural Improvements:
ByteStoragelayer with tuple-based storage maintains POD complianceKeyValueStore+Internal.swiftseparates implementation detailsBreaking Changes
KeyValueStore API Change: Now requires Key and Value type parameters
Testing & CI
test.ymlworkflow for multi-platform testing (macOS, iOS, tvOS, watchOS, visionOS)Test Plan