美文网首页
Runtime - cache方法缓存

Runtime - cache方法缓存

作者: xxttw | 来源:发表于2023-06-07 19:38 被阅读0次

    cache_t

    image.png
    • struct bucket_t *buckets 散列表也叫哈希表
    • mask 散列表的长度-1
    • occupied 已缓存的方法数量

    散列表查找缓存的原理

    首先buckets散列表 其实就是一个数组, 也会有索引和索引对应的数据
    方法存储时, 通过 方法名 & mask 算出一个索引值, 直接存入散列表
    查找方法时 通过方法名@selector@(personTest) & mask(散列表的长度-1)计算出一个索引, buckets[索引] 直接取出缓存对象, 获得imp 函数地址 直接调用, 这种方式查询方法效率就会特别高
    这种方法就是牺牲一定的内存空间来换取执行效率

    • 如果有两个方法计算出的索引都是同一个,第二个方法的索引底层会自动-1, 直到找到不重复的空位位置
      查找方法的时候, 发现索引和key不一样, 也会自动-1 开始查询, 也是直到找到相同的key为止


      image.png

    相关文章

      网友评论

          本文标题:Runtime - cache方法缓存

          本文链接:https://www.haomeiwen.com/subject/qpkmqdtx.html