当前位置: 首页 > 知识库问答 >
问题:

调用ToList()是否会对性能产生影响?

丁长卿
2023-03-14

使用tolist()时,是否有需要考虑的性能影响?

我正在编写一个从目录检索文件的查询,这就是查询:

string[]imageArray=directory.getfiles(directory);

那么,在决定进行这样的转换时,是否应该考虑某种性能影响--还是只在处理大量文件时才考虑?这是一个可以忽略不计的转换吗?

共有1个答案

柳正志
2023-03-14

是的,IEnumerable .toList() 确实会对性能产生影响,它是一个O(n)操作,尽管它可能只在性能关键操作中需要注意。

ToList()操作将使用列表(IEnumerable collection) 构造函数。这个构造函数必须创建数组的副本(更一般地是IEnumerable ),否则将来对原始数组的修改也会在源t[]上发生变化,这通常是不理想的。

我想重申一下,这只会对一个巨大的列表产生影响,复制内存块是一个相当快的操作。

您将注意到在LINQ中有几个以as(如Asenumerable())和to(如ToList())开头的方法。以开头的方法需要进行类似于上面的转换(即可能影响性能),而以作为开头的方法不需要转换,只需要一些强制转换或简单操作。

以下是有关列表 工作方式的更多细节,以备您感兴趣时使用:)

列表 还使用一个称为动态数组的构造,需要根据需要调整其大小,此调整大小事件将旧数组的内容复制到新数组。所以它一开始就很小,如果需要的话就会增大尺寸。

 类似资料:
  • 问题内容: 我怀疑Java代码中未使用的导入和未使用的对象是否会对性能产生影响? 假设一个对象已初始化并且从未使用过,会发生什么?未使用进口的成本是多少 问题答案: 这是一个非常普遍的问题。 像大多数性能问题一样,最好的方法是编写最清晰,最简单的代码,因为这样可以提高代码的可维护性,并有助于确保代码即使更改后也能正常运行。(聪明/难以理解/不必要地开始,详细的代码可以快速运行,但是由于只是凡人而改

  • 问题内容: http://msdn.microsoft.com/zh- CN/library/system.data.sqlclient.sqlparametercollection.addwithvalue.aspx 我习惯于使用add()函数将sql参数添加到sqlCommand中。这使我可以指定sqlParameter的类型,但是需要另一行来设置值。 使用AddWithValue函数很好,但

  • 我正在设计高通量系统,在那里我将有几个生产者。 我的主题将被分割。生产者将发送记录作为键值对。 键将用于对数据进行分区。 消费者将被组织在消费者组中(他们将被分配相同的组id,以便他们可以同时使用来自同一主题但来自不同分区的消息)。 Kafka保证消息在单个分区中的顺序。 消费者将被分配公平份额的分区。 唯一让我担心的是,我的分区键不会以循环方式分发消息,有些分区可能比其他分区更忙。 问:不均匀的

  • 是否可以/允许/建议在生产中始终在“细节”级别启用NMT:

  • 问题内容: 亚马逊称该 加密和解密是透明处理的,因此您无需修改​​应用程序即可访问数据 我的应用程序(Rails,MySQL,Elasticsearch)构建了大量图形,因此查询了许多数据。根据我以前对数据库加密的经验,它确实会影响数据的检索速度(因为我们只能说记录在读取和解密后是否符合条件)。 有没有相关的基准?或者,也许您曾经使用过AWS的这种服务器端加密?我是否完全需要担心性能变化? 对我来

  • 我对“关闭”我的程序的abort术语的术语和矛盾感到有点困惑,从该函数的描述来看,它说析构函数和开放资源可能分别不被调用/关闭。那么,在调用abort()之后,我的程序是否仍在运行并且存在内存泄漏或者资源仍然打开?