【发布时间】:2018-02-13 08:44:37
【问题描述】:
假设我有一个程序getTuple(): (int, int, int)。如何迭代返回的元组?看起来items 不是为tuple 定义的,所以我不能这样做for i in getTuple()。
我最初有这个返回一个sequence,这被证明是一个瓶颈。我可以在不影响性能的情况下让它工作吗?我想作为最后的手段,我可以展开我的循环,但有什么办法可以解决这个问题吗?
【问题讨论】:
标签: nim-lang
假设我有一个程序getTuple(): (int, int, int)。如何迭代返回的元组?看起来items 不是为tuple 定义的,所以我不能这样做for i in getTuple()。
我最初有这个返回一个sequence,这被证明是一个瓶颈。我可以在不影响性能的情况下让它工作吗?我想作为最后的手段,我可以展开我的循环,但有什么办法可以解决这个问题吗?
【问题讨论】:
标签: nim-lang
好的,我想通了。您可以遍历元组的字段:
let t = (2,4,6)
for x in t.fields:
echo(x)
【讨论】:
我最初有这个返回一个序列,这被证明是一个瓶颈。我可以在不影响性能的情况下让它工作吗?
改用array[N, int],它没有间接性。为什么 seq 的性能不够好?您可能希望最初使用 newSeq[int](size) 将其分配到正确的大小。
【讨论】:
newSeq 花费了大量时间。这是一些性能关键的模拟代码的最内层循环。我刚刚测试了array[N, int],它非常出色 - 谢谢!