1

我有一个大约 1176^3 个位置的列表。做某事

val x = list.length

需要几个小时..

当列表中的位置是 1271256 时是可以的,只需几秒钟。有人知道如何加快速度吗?

4

2 回答 2

9

List长度操作可能是错误的数据结构,因为它是 O(n) - 完成列表越长,完成所需的时间就越长。

如果您需要调用Vectorlength可能是一种更好的数据结构,因为它的存储支持有限时间内的随机访问。

当然,这并不意味着 List 结构不好使用,只是在这种情况下它可能不是更可取的。

于 2013-01-10T13:42:23.460 回答
1

为了增加 gpampara 的答案,在这种情况下,您实际上可以证明使用数组是合理的,因为它具有最低的存储每个项目的开销和 O(1) 访问元素和长度确定(因为它记录在数组标题本身)。

数组有很多缺点,但我认为当内存开销是主要考虑因素时(并且当创建时已知大小的固定大小集合是可行的)时它是合理的。

于 2013-01-10T15:34:47.340 回答