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.
Test Case 1 & 2
Same environment as in #124
Baseline:
master
One Observer: 0.018 sec (10%)
Eight Observers: 0.053 sec (5%)
A custom iterator to mitigate the time spent in protocol witness table for calling the default implementations.
One Observer: 0.012 sec (10%)
Eight Observers: 0.030 sec (6%)
Replace
Array
withContiguousArray
to avoidswift_bridgeObjectRetain
calls in Array subscript getter, despiteBagElement
being a Swift struct.One Observer: 0.010 sec (12%)
Eight Observers: 0.020 sec (3%)
Replace the monotonic ID in
Bag
withObjectIdentifier
.Apparently no effect on iteration performance.