Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Objective数据结构的近似运行时比较

Objective数据结构的近似运行时比较
EN

Stack Overflow用户
提问于 2012-10-21 09:29:53
回答 2查看 361关注 0票数 3

想象一下你有一堆NSArrays。数组都包含包装在CGPoints中的NSValues。并非所有的元素都是独一无二的。所以某些元素可以出现在多个数组中。如何最快地将这些数组组合成一个数组,这样得到的数组只包含唯一的元素?

现在我是这样做的

  1. 使用NSSet将每个数组插入setByAddingObjectsFromArray
  2. 用集合的内容填充结果数组

另一种选择是:

  1. 遍历每个数组一次,并将每个值插入到一个NSDictionary中(如果它还没有在其中)
  2. 遍历字典的键一次,并将每个键插入结果数组

传统的运行时分析指出,第一个选项应该使用O(n log n),其中n是所有初始数组中的元素数(遍历所有元素,并将每个元素插入二进制搜索树或日志时间中类似的元素)。对于第二种方法,运行时是O(n),因为查找和插入哈希表是在摊销常数时间内运行的。然而,在阅读了一些关于苹果的数据结构之后,认为它们的行为像传统的数据结构似乎是愚蠢的。

EN

回答 2

Stack Overflow用户

发布于 2012-10-21 09:34:35

由于这两种方法都介于O(n)O(n log n)之间,并且您的n很可能足够小,以至于log n是有界的和小的,所以常数因子可能决定哪一个是最快的。

在这一点上,使用看起来像用例的数据进行基准测试是最好的选择。

我相信,但不确定,NSSet也是用哈希实现的。

票数 3
EN

Stack Overflow用户

发布于 2012-12-05 09:44:02

实际上..。我认为时间几乎是一样的,但是,在NSDictionary的情况下,您将获得一些内存开销,因为在这种情况下,您需要将密钥复制到该NSDictionary。NSDictionaryNSSet的工作方式都是相同的:

  1. 检查hash是否具有唯一性。
  2. 如果两个项具有相同的缓存,则将调用isEqual

你提到的方法并没有太大的不同。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13000296

复制
相关文章
NodeJS操作Redis
新建test.js,然后在目录下执行npm install redis var redis = require('redis'); var client = redis.createClient(6379,'127.0.0.1'); client.on('connect', function() { console.log('connected'); }); //string client.set('framework', 'AngularJS'); client.get('framework',f
苦咖啡
2018/04/28
3.6K0
nodejs集成redis
Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
OECOM
2020/07/01
9330
nodejs操作Redis事务
有时候为了同时处理多个结构,我们需要向redis发送多个命令,或者服务器采用负载均衡的模式,多个负载同时访问redis,造成并发。为了让redis执行期间不受其他命令的影响,redis提供了事务的命令,事务在关系型数据库如mysql中很常见,也是为了应对并发等来产生的。
OECOM
2020/07/01
1.4K0
Redis实现列表数据查询设计
本文总结个人在使用Redis存储列表数据业务场景下的一些思路。平常在使用数据查询时,我们一般会将查询出来的数据使用json_encode()序列化一下,然后根据数据ID存储到Redis中。这样针对列表类的数据,或许就不是很好的实现了(因为涉及到分页计算)。本文使用String和zset类型实现这样的功能。
兔云小新LM
2021/03/16
1.3K0
nodejs使用redis发布订阅
一般来说,发布与订阅(又称为pub/sub)的特点是订阅者(listener)负责订阅频道(channel),发送者(publisher)负责向频道发送二进制字符串消息(binary string message)。每当有消息被发送至给定频道时,频道的所有订阅者都会接收到消息,我们也可以吧频道看作是电台,其中订阅者可以同时收听多个电台,而发送者则可以在任何电台发送消息。
OECOM
2020/07/01
2.6K0
java redis模糊查询_Redis模糊查询「建议收藏」
最近使用Redis优化项目功能,其中有一部分为模糊查询,找了很多帖子,也没有找到很好的解决方案和思路,最终皇天不负有心人啊,终于让我找到了!!!
全栈程序员站长
2022/09/02
7.2K0
Redis | 慢查询
MySQL 中存在慢查询,Redis 中也存在慢查询,Redis 的慢查询是命令执行超过设定阈值的查询就是慢查询。我们来整理一下。
码农UP2U
2021/01/14
7940
Redis | 慢查询
redis模糊查询
把所有的数据按照字符串形式的key-value保存到redis中,然后使用keys *关键字*方式模糊匹配。在设计key时,需要把模糊查询的value叶设计成key的一部分。但是网上有说:redis生产环境中慎用keys模糊匹配方法
BUG弄潮儿
2022/06/30
4.2K0
nodejs的redis工具类 原
做一个工具时,起初用到redis,后来发现有更好的解决方案,遂放弃redis,但辛辛苦苦写的code不舍得删,这里记录下
尚浩宇
2018/08/17
8750
redis scan命令_redis 查询命令
我们可能会遇到需要运行的某些命令在godis中不存在的情况,这个时候我们可以使用其原生的方式运行命令,为了方便使用,封装了一个方法,用于简化这个过程。需要注意的是,执行命令的返回结果返回的是interface{},需要对其进行解析成可读的实体结构。
全栈程序员站长
2022/11/08
1.9K0
redis 学习(10)-- redis 慢查询
MySQL会记录下查询超过指定时间的语句,我们将超过指定时间的SQL语句查询称为慢查询,都记在慢查询日志里。
希希里之海
2019/06/02
1K0
redis web查询工具
1、默认不带登录鉴权功能(改进:在前面接一道nginx或者其它支持统一登录的工具)
保持热爱奔赴山海
2020/07/24
1.2K0
Redis慢查询日志
slow log是Redis用来记录查询执行时间超过给定时长的命令请求的日志系统。许多数据库(如:MySQL)提供慢查询日志帮助开发与运维人员定位系统存在的慢操作。所谓慢查询日志就是系统在命令执行前后计算每条命令的执行时间,当超过预设阈值,就将这条命令的相关信息(例如:发生时间,耗时,命令的详细信息)记录到慢查询日志中,Redis也提供了类似的功能;另外,slow log保存在内存里面,读写速度非常快,因此你可以放心地使用它,不必担心因为开启slow log而损害Redis的速度。
SEian.G
2021/03/03
4920
Redis(7)——慢查询
慢查询日志就是系统在命令执行前后计算每条命令的执行时间,但超过预设阈值时,会将这条命令的相关信息(执行时间 执行耗时 命令的详细信息)记录下来。
羊羽shine
2019/05/29
6390
Redis慢查询日志
通过 slowlog get 查看慢查询日志是什么样子?【从其他redis服务器看的】
每天晒白牙
2020/08/20
3.2K1
Redis 数据库操作、配置以及慢查询
Redis 提供了几个面向 Redis 数据库的操作,例如之前已经介绍过或者使用过的 DBSIZE 、SELECT 、FLUSHDB/FLUSHALL 本节将通过具体的使用场景介绍这些命令。
三产
2021/01/12
7660
Redis 慢查询分析
慢查询,顾名思义就是比较慢的查询,但是究竟是哪里慢呢?首先,我们了解一下Redis命令执行的整个过程:
zeekling
2022/08/26
3100
Redis 慢查询分析
Nodejs 12306余票查询小工具
一个 Nodejs 写的查询12306余票的小工具,查询到指定车次的车票后会反馈到邮箱
小鑫
2022/04/24
3870
点击加载更多

相似问题

希伯来语多语言[数字]

23

从右到左语言的网站(阿拉伯语、希伯来语)

20

sql中的希伯来语和其他语言

23

从右到左语言的页面顺序(阿拉伯语、希伯来语)

10

语言未更新到希伯来语android

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文