mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-22 14:20:20 +00:00
[ASRunLoopQueue - Performance] Add ASDeallocQueue for efficient object teardown. (#2399)
* [ASRunLoopQueue - Performance] Add ASDeallocQueue for efficient object teardown. This measurably reduces block overhead and context switching. In the layout benchmark, it increases ops/s while actually reducing CPU utilization. This suggests that we are now at a lock-bounded local maximum, at least for tri-core devices. * [ASDeallocQueue] Update convenience helper method and adopt in ASImageNode etc. * [ASDeallocQueue] Reimplement the queue using a timer-based runloop. * [Debugging] Re-enable ASDisplayNode Event Log. * [ASDeallocQueue] Final refinements, comments, code minimization. * [ASDeallocQueue] Fix for lock release needed in early return (refactoring typo from last commit)
This commit is contained in:
@@ -17,6 +17,7 @@
|
||||
#import "ASTextKitTailTruncater.h"
|
||||
#import "ASTextKitFontSizeAdjuster.h"
|
||||
#import "ASInternalHelpers.h"
|
||||
#import "ASRunLoopQueue.h"
|
||||
|
||||
//#define LOG(...) NSLog(__VA_ARGS__)
|
||||
#define LOG(...)
|
||||
@@ -127,17 +128,13 @@ static NSCharacterSet *_defaultAvoidTruncationCharacterSet()
|
||||
// truncater do it's job again for the new constrained size. This is necessary as after a truncation did happen
|
||||
// the context would use the truncated string and not the original string to truncate based on the new
|
||||
// constrained size
|
||||
__block ASTextKitContext *ctx = _context;
|
||||
__block ASTextKitTailTruncater *tru = _truncater;
|
||||
__block ASTextKitFontSizeAdjuster *adj = _fontSizeAdjuster;
|
||||
|
||||
ASPerformBackgroundDeallocation(_context);
|
||||
ASPerformBackgroundDeallocation(_truncater);
|
||||
ASPerformBackgroundDeallocation(_fontSizeAdjuster);
|
||||
_context = nil;
|
||||
_truncater = nil;
|
||||
_fontSizeAdjuster = nil;
|
||||
ASPerformBlockOnDeallocationQueue(^{
|
||||
ctx = nil;
|
||||
tru = nil;
|
||||
adj = nil;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user