【问题标题】:Server performance - database access queries results: List<> or IEnumerable<>?服务器性能 - 数据库访问查询结果:List<> 还是 IEnumerable<>?
【发布时间】:2019-01-23 18:42:27
【问题描述】:

我正在使用WebSocketSharp 库在 ASP.NET 服务器上运行套接字。

服务器端套接字必须访问数据库,因此它返回一个项目集合。

目前,我在数据访问层,方法从数据库返回List&lt;&gt;类型:

async Task&lt;List&lt;object&gt;&gt; GetListOfItems();

我想知道一个可枚举的实现是否会更快并且在性能方面也便宜

另外,他们也应该是async 电话吗?

【问题讨论】:

  • 根据这个答案,是的,你可以/应该异步。 stackoverflow.com/questions/23295119/…
  • @AnyMoose 不回答我的问题
  • 您问“如果是这样,它们也应该是异步调用吗?”。所以我回答了。您可能需要简化问题以获得更好的答案。
  • @AnyMoose 我需要对Manager.GetListOfItems() 返回的每个项目执行异步套接字发送消息,这不知道它应该返回List 还是Enumerable,基本上哪个更快更便宜.发布一个答案,如果它适合我​​的需要,我会接受

标签: c# performance sockets business-logic


【解决方案1】:

列表是一个 IEnumerable,通过中介 - 如果您浏览参考源:

公共类列表:IList、System.Collections.IList、IReadOnlyList

而 IList 是:

公共接口 IList : ICollection

还有:

公共接口ICollection:IEnumerable

所以实际上它们在实际使用时是相同的,速度差异将取决于你正在做什么。

如果你想知道什么是最快的,那就测试一下吧! System.Diagnostics 中有一个 Stopwatch 类就是为了这个目的。

来源:which is Faster? IEnumerable or List With Example.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-07
    • 2013-01-27
    • 1970-01-01
    • 1970-01-01
    • 2018-04-21
    • 1970-01-01
    • 2020-12-23
    相关资源
    最近更新 更多