gpt4 book ai didi

c# - C#列表迭代性能

转载 作者:太空宇宙 更新时间:2023-11-03 17:57:28 25 4
gpt4 key购买 nike

我有一个for循环,执行24次总迭代,每个迭代代表一天中的一个小时,然后在另一个嵌套的for循环中检查每个15分钟的间隔。另一个嵌套会检查列表中的小时和分钟值,然后在满足我的时间要求的情况下汇总列表中的某些项目。问题是我的列表最多可以包含100万条记录,这意味着我遍历100万条记录24 * 4次。

在这种情况下,如何优化代码以提高性能?我知道可以使用LINQ语句简化此操作,但是我不确定它会使其更快。这是我在做什么的一个例子。

List<SummaryData> Aggregates = new List<SummaryData>();
for(int startHour = 0; startHour < 24; startHour++)
{
for(int startMin = 0; startMin < 60; startMin+= 15)
{
int aggregateData = 0;
//My ItemList can have up to 1 million records.
foreach(ListItem item in ItemList)
{
if((item.time.Hour == startHour)&&(item.time.Minute == startMinute))
{
aggregateData += item.number;
}
}
SummaryData aggregate = new SummaryData { SummaryId = item.id, TotalNumber = aggregateData
Aggregates.Add(aggregate);

}
}
class SummaryData
{
public int SummaryId {get; set;}
public int TotalNumber {get; set;}
}

最佳答案

不必在每个Hour中查找每个Minuteitem,而是仅对ItemList进行一次迭代,并根据每个item.time.Houritem.time.Minute进行操作。

关于c# - C#列表迭代性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7433935/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com