美文网首页
一次优化,如何使用KVC让查询速度提高n倍

一次优化,如何使用KVC让查询速度提高n倍

作者: overmindgc | 来源:发表于2017-09-05 14:21 被阅读16次

需求

获取一批客户数据的时候,需要先调用接口拿到客户的基本信息,然后再调用一个接口来获取客户的其他信息,最后合并在一起来使用。

优化前

一般情况下数据量不大,所以没有多想,简单的for循环了下:

for (CustomerNode *custModel in custInfoColumnArray) {
    //结果集
    NSMutableArray *resultMutiArray = [resultArray mutableCopy];
    for (NSDictionary *dict in resultMutiArray) {
        NSString *custNum = [dict valueForKey:@"custNum"];
        NSString *unVisitDay = [dict valueForKey:@"unVisitDay"];
        NSString *returnDay = [dict valueForKey:@"returnDay"];
        // 判断custNum一致
        if ([custModel.custNum isEqualToString:custNum]) {
            custModel.unVisitDay = unVisitDay;
            custModel.returnDay = returnDay;
            [resultMutiArray removeObject:dict];
            break;
        }
    }
}

有一天客户反映列表打开巨慢,一查这个resultArray居然至少有5000条数据,测了下需要4秒才能处理完,必须进行优化了。

优化

显然通过for循环来查找对象速度太慢,那还有什么好办法呢?
考虑了一下,使用key-value结构的的hash表查找机制,应该是效率最高的,改造一下:

// 创建一个key-value结构数据,key为需要匹配的cusNum,值为对应的完整对象
NSMutableDictionary *resultDict = [NSMutableDictionary dictionary];
for (NSDictionary *dic in resultArray) {
    [resultDict setValue:dic forKey:[dic valueForKey:@"custNum"]];
}
for (CustomerNode *custModel in custInfoColumnArray) {
    // 直接通过valueForKey匹配到需要修改的对象
    NSDictionary *dict = [resultDict valueForKey:custModel.custNum];
    NSString *unVisitDay = [dict valueForKey:@"unVisitDay"];
    NSString *returnDay = [dict valueForKey:@"returnDay"];
    custModel.unVisitDay = unVisitDay;
    custModel.returnDay = returnDay;
}

不出所料,因为通过KVC方式匹配数据效率高到可以忽略,一共只循环了2次,执行时间几乎变为了瞬间,完美!

相关文章

  • 一次优化,如何使用KVC让查询速度提高n倍

    需求 获取一批客户数据的时候,需要先调用接口拿到客户的基本信息,然后再调用一个接口来获取客户的其他信息,最后合并在...

  • 使用instr,like,locate进行模糊查询

    使用instr,like,locate进行模糊查询 ​ 使用instr代替like查询,可以优化查询速度。

  • 性能调优之SQL优化

    性能调优之SQL优化如何加快查询速度?1、升级硬件2、根据查询条件,建立索引,优化索引、优化访问方式,限制结果集的...

  • 如果某段与数据库交互的程序运行较慢你将如何处理?

    一是首先提高数据库的查询速度,比如增加索引,优化表的结构。 二是优化程序代码,如果查询比较多,可以尽量用条件查询,...

  • MySQL优化

    MySQL优化 1. 避免使用 select * 你需要什么信息,就查询什么信息,查询的多了,查询的速度肯定就...

  • MySQL 查询慢的解决办法

    如果应用程序使用了mysql,其中包含一些查询速度慢的sql,我们要去优化它们,优化的思路需要如何进行呢?主要是以...

  • 性能调优之SQL优化

    如何加快查询速度?1、升级硬件2、根据查询条件,建立索引,优化索引、优化访问方式,限制结果集的数据量。3、扩大服务...

  • SQL优化(收集)

    如何加快查询速度? 升级硬件 根据查询条件,建立索引,优化索引,优化访问方式,限制结果集的数据量。 扩大服务器的内...

  • 山茶书语15

    所以,如何提高工作速度,其实跟“如何让不同的工作同时展开”相关。也就是说,如果能同时处理好5倍或者10倍的量,即使...

  • 检索

    检索的概念与作用:是一种提高查询速度的机制,提高查询速度 索引的使用:由数据库自行调用 索引的种类:普通索引唯一索...

网友评论

      本文标题:一次优化,如何使用KVC让查询速度提高n倍

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