iOSのキャッシュ方式cache_tの基本原理の詳細な分析

1. cache_tの原理

  • Classにはメソッドキャッシュcache_tがあり、これはハッシュテーブルを使用して呼び出されたメソッドをキャッシュするため、メソッドへのアクセス速度を向上させることができます。
	struct cache_t {
    
    
	    struct bucket_t *_buckets;// 数组
	    mask_t _mask;//
	    mask_t _occupied;
	
	public:
	    struct bucket_t *buckets();
	    mask_t mask();
	    mask_t occupied();
	    void incrementOccupied();
	    void setBucketsAndMask(struct bucket_t *newBuckets, mask_t newMask);
	    void initializeToEmpty();
	
	    mask_t capacity();
	    bool isConstantEmptyCache();
	    bool canBeFreed();
	
	    static size_t bytesForCapacity(uint32_t cap);
	    static struct bucket_t * endMarker(struct bucket_t *b, uint32_t cap);
	
	    void expand();
	    void reallocate(mask_t oldCapacity, mask_t newCapacity);
	    struct bucket_t * find(cache_key_t key, id receiver);
	
	    static void bad_cache(id receiver, SEL sel, Class isa) __attribute__((noreturn));
	};
  • Cache_tは構造体であり、キャッシュに相当します。キャッシュは、構造体に含まれるスペースのサイズに応じて、使用するバイト数を決定するメソッドです。(Cache_tは構造体へのポインターではなく、構造体です。Classは構造体へのポインターであり、8バイトを占めます)
	struct cache_t {
    
    
		struct bucket_t *_buckets; // 8
    	mask_t _mask;              // 4
    	mask_t _occupied;          // 4
    }

つづく

おすすめ

転載: blog.csdn.net/Forever_wj/article/details/108633958