当前位置: 首页 > 面试题库 >

迭代器的性能优势?

奚正谊
2023-03-14
问题内容

使用迭代器可以提供什么(如果有的话)性能优势。似乎是解决许多问题的“正确方法”,但是它会创建更快/更具有内存意识的代码吗?我在用Python专门思考,但不要仅仅局限于此。


问题答案:

实际上在python邮件列表上有一封很好的邮件: Iterators vs
Lists
。这有点过时(从2003年开始),但是据我所知,它仍然有效。

总结如下:

对于小型数据集,基于迭代器和列表的方法具有相似的性能。对于较大的数据集,迭代器可以节省时间和空间。

我从中得出的是:如果可能的话,迭代器比将数据加载到列表中更可取。但是,除非您有一个庞大的数据集,否则请不要扭曲您的代码以使某些内容适合列表以与迭代器一起使用。



 类似资料:
  • 我需要一个解决方案来提高这种方法的性能。我需要使用LinkedHashMap按顺序插入这些输入,它工作得很好。然而,我不喜欢这个解决方案,因为我有一个列表,每次我都要通过它来检索我想插入到这个地图中的输入。 这是我的密码 我需要一种方法来检索这些对象,而无需重复此列表3次。

  • 问题内容: 失败安全迭代器是那些不会失败的迭代器 。 但是和之间有什么区别? 都一样吗 问题答案: 无论和迭代器不乱扔。 依赖CAS( compare-and-swap )的集合具有弱一致性的迭代器,该迭代器反映了自创建以来对其后备集合进行的部分更改,但不一定反映所有更改。例如,如果集合中的元素在迭代器到达之前已被修改或删除,则它肯定会反映出这些更改,但对插入没有任何保证。 迭代器机制复制内部Co

  • 为了决定使用哪个实现,我们需要知道哪个版本的 函数更快:直接使用 for 循环的版本还是使用迭代器的版本。 我们运行了一个性能测试,通过将阿瑟·柯南·道尔的“福尔摩斯探案集”的全部内容加载进 String 并寻找其中的单词 “the”。如下是 for 循环版本和迭代器版本的 search 函数的性能测试结果: 结果迭代器版本还要稍微快一点!这里我们将不会查看性能测试的代码,我们的目的并不是为了证明

  • 迭代器这个概念在很多语言中(比如 C++,Java)都是存在的,但是不同语言实现迭代器的方式各不相同。在 Python 中,迭代器是指遵循迭代器协议(iterator protocol)的对象。至于什么是迭代器协议,稍后自然会说明。为了更好地理解迭代器,我先介绍和迭代器相关的两个概念: 迭代(Iteration) 可迭代对象(Iterable) 你可能会觉得这是在玩文字游戏,但这确实是要搞清楚的。

  • 当一个对象实现了属性时,我们认为它是可迭代的。 一些内置的类型如Array,Map,Set,String,Int32Array,Uint32Array等都已经实现了各自的Symbol.iterator。 对象上的Symbol.iterator函数负责返回供迭代的值。 for..of 语句 for..of会遍历可迭代的对象,调用对象上的Symbol.iterator属性。 下面是在数组上使用for.

  • 问题内容: 和遍历函数之间是否有性能差异? 问题答案: 我认为,由于其高级实现,遍历必须更快 这就是为什么: 让我们逐步执行。 该实施是这样的: 在 从扩展和继承相同的实现。 两者的实现方式不同。 因为它从 但是从 因此, 差异 本质上可以归结为实施。 因为它只是调用e.after,其中e是,但是对于遍历数组以查找下一个下一个要涉及一些工作。 UPDATE :用于在 Entry []不是连续的存储