Skip to content

Commit d3af631

Browse files
author
Mallory Paine
committed
Improve performance by moving to NSMutableOrderedSet
1 parent 044727e commit d3af631

1 file changed

Lines changed: 11 additions & 4 deletions

File tree

FastImageCache/FICImageTable.m

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ @interface FICImageTable () {
5757
NSMutableDictionary *_indexMap; // Key: entity UUID, value: integer index into the table file
5858
NSMutableDictionary *_sourceImageMap; // Key: entity UUID, value: source image UUID
5959
NSMutableIndexSet *_occupiedIndexes;
60-
NSMutableArray *_MRUEntries;
60+
NSMutableOrderedSet *_MRUEntries;
6161
NSDictionary *_imageFormatDictionary;
6262
}
6363

@@ -142,7 +142,7 @@ - (instancetype)initWithFormat:(FICImageFormat *)imageFormat {
142142
_indexMap = [[NSMutableDictionary alloc] init];
143143
_occupiedIndexes = [[NSMutableIndexSet alloc] init];
144144

145-
_MRUEntries = [[NSMutableArray alloc] init];
145+
_MRUEntries = [[NSMutableOrderedSet alloc] init];
146146
_sourceImageMap = [[NSMutableDictionary alloc] init];
147147

148148
_recentChunks = [[NSMutableArray alloc] init];
@@ -501,10 +501,11 @@ - (void)_entryWasAccessedWithEntityUUID:(NSString *)entityUUID {
501501
- (void)saveMetadata {
502502
[_lock lock];
503503

504+
NSArray *mruArray = [_MRUEntries array];
504505
NSDictionary *metadataDictionary = [NSDictionary dictionaryWithObjectsAndKeys:
505506
_indexMap, FICImageTableIndexMapKey,
506507
_sourceImageMap, FICImageTableContextMapKey,
507-
_MRUEntries, FICImageTableMRUArrayKey,
508+
mruArray, FICImageTableMRUArrayKey,
508509
_imageFormatDictionary, FICImageTableFormatKey, nil];
509510

510511
NSData *data = [NSPropertyListSerialization dataWithPropertyList:metadataDictionary format:NSPropertyListBinaryFormat_v1_0 options:0 error:NULL];
@@ -541,7 +542,13 @@ - (void)_loadMetadata {
541542
}
542543

543544
[_sourceImageMap setDictionary:[metadataDictionary objectForKey:FICImageTableContextMapKey]];
544-
[_MRUEntries setArray:[metadataDictionary objectForKey:FICImageTableMRUArrayKey]];
545+
546+
[_MRUEntries removeAllObjects];
547+
548+
NSArray *mruArray = [metadataDictionary objectForKey:FICImageTableMRUArrayKey];
549+
if (mruArray) {
550+
[_MRUEntries addObjectsFromArray:mruArray];
551+
}
545552
}
546553
}
547554

0 commit comments

Comments
 (0)