mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-22 14:20:20 +00:00
Micro-optimizations in ASDisplayNode that help reduce overhead when recursing large hierarchies.
This commit is contained in:
@@ -1405,6 +1405,10 @@ static NSInteger incrementIfFound(NSInteger i) {
|
|||||||
{
|
{
|
||||||
ASDisplayNodeAssertMainThread();
|
ASDisplayNodeAssertMainThread();
|
||||||
ASDisplayNodeAssert(!_flags.isEnteringHierarchy, @"Should not cause recursive __enterHierarchy");
|
ASDisplayNodeAssert(!_flags.isEnteringHierarchy, @"Should not cause recursive __enterHierarchy");
|
||||||
|
|
||||||
|
// Profiling has shown that locking this method is benificial, so each of the property accesses don't have to lock and unlock.
|
||||||
|
ASDN::MutexLocker l(_propertyLock);
|
||||||
|
|
||||||
if (!self.inHierarchy && !_flags.visibilityNotificationsDisabled && ![self __selfOrParentHasVisibilityNotificationsDisabled]) {
|
if (!self.inHierarchy && !_flags.visibilityNotificationsDisabled && ![self __selfOrParentHasVisibilityNotificationsDisabled]) {
|
||||||
self.inHierarchy = YES;
|
self.inHierarchy = YES;
|
||||||
_flags.isEnteringHierarchy = YES;
|
_flags.isEnteringHierarchy = YES;
|
||||||
@@ -1427,6 +1431,10 @@ static NSInteger incrementIfFound(NSInteger i) {
|
|||||||
{
|
{
|
||||||
ASDisplayNodeAssertMainThread();
|
ASDisplayNodeAssertMainThread();
|
||||||
ASDisplayNodeAssert(!_flags.isExitingHierarchy, @"Should not cause recursive __exitHierarchy");
|
ASDisplayNodeAssert(!_flags.isExitingHierarchy, @"Should not cause recursive __exitHierarchy");
|
||||||
|
|
||||||
|
// Profiling has shown that locking this method is benificial, so each of the property accesses don't have to lock and unlock.
|
||||||
|
ASDN::MutexLocker l(_propertyLock);
|
||||||
|
|
||||||
if (self.inHierarchy && !_flags.visibilityNotificationsDisabled && ![self __selfOrParentHasVisibilityNotificationsDisabled]) {
|
if (self.inHierarchy && !_flags.visibilityNotificationsDisabled && ![self __selfOrParentHasVisibilityNotificationsDisabled]) {
|
||||||
self.inHierarchy = NO;
|
self.inHierarchy = NO;
|
||||||
|
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ FOUNDATION_EXPORT NSString * const ASRenderingEngineDidDisplayNodesScheduledBefo
|
|||||||
// Allow 2^n increments of begin disabling hierarchy notifications
|
// Allow 2^n increments of begin disabling hierarchy notifications
|
||||||
#define VISIBILITY_NOTIFICATIONS_DISABLED_BITS 4
|
#define VISIBILITY_NOTIFICATIONS_DISABLED_BITS 4
|
||||||
|
|
||||||
#define TIME_DISPLAYNODE_OPS (DEBUG || PROFILE)
|
#define TIME_DISPLAYNODE_OPS 0 // If you're using this information frequently, try: (DEBUG || PROFILE)
|
||||||
|
|
||||||
@interface ASDisplayNode ()
|
@interface ASDisplayNode ()
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user