gpt4 book ai didi

ios - 为什么手动实现哈希标签可以提高我的查询性能?

转载 作者:可可西里 更新时间:2023-11-01 03:59:41 27 4
gpt4 key购买 nike

在我的模型中,我设置了一个实体(比方说人)有一个属性作为字符串(称为“名称”),并在其上放置了一个索引。如果我对我的模型进行大量查询,那么这些查询会导致性能下降。我的查询很简单

  [ NSPredicate predicateWithFormat: @"%K == %@", @"name", lPersonName ];

所以我假设索引会完成它的工作。

然后,如果我计算一些简单的散列标签并将其与我的实体一起存储在索引整数属性(称为“散列”)中,并执行更窄的查询,性能消耗就消失了。像这样:

[ NSPredicate predicateWithFormat: @"%K == %d AND (%K == %@)",
@"hash", [ self calculateHashForName: lPersonName ],
@"name", lPersonName ];

为什么整数索引比字符串索引快得多?我忽略了什么吗?这是核心数据问题吗?

当然,我可以将解决方案保留在井号标签中,但如果我忽略了某些内容,我希望尽早了解它。

最佳答案

在低级别计算机上本地处理整数,处理器具有整数的内部数据类型但没有字符串的内部数据类型(无论如何在 ARM 和 x86 领域)。

4000000000 == -123456789 

可以由计算机在 1 条指令中处理,而...

"Abcdefg" == "Abcdefzzzz"

必须循环遍历字符,接受几条指令。

这是相当笼统的,但它捕获了问题的症结所在。简而言之,计算机处理整数的速度更快,即使字符串可以表示为整数(二进制字节),它们的长度也是可变的,这使得它们的处理更加复杂。

关于ios - 为什么手动实现哈希标签可以提高我的查询性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9808284/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com