在列表中每x%更新一次屏幕的计算成本较低的方法是什么?
本文关键字:计算 是什么 方法 屏幕 一次 列表 更新 | 更新日期: 2023-09-27 18:05:17
我有一个IEnumerable列表,我必须对列表中的每个项目进行长时间运行操作。该列表中可能有5000万到5000万个项目。
我有列表中对象的总数,并且我使用foreach来遍历列表。
我希望每x%的数据写入到控制台,x通常用于较大的数据集,而较少用于较小的数据集。
如果写入距离完全相同(即100项为10% 20%,更大的项为1.01% 1.02%)将是一个额外的好处
温柔点,这是我第一个SO问题!:)
我有列表中对象的总数,我使用aForeach遍历列表
,那么您已经知道要处理的项数,因此一个明显的解决方案是:
int total = theList.Count;
int done = 0;
foreach (var item in theList)
{
Process(item);
done++;
// Outputs progress
double percentage = done / total * 100;
Console.WriteLine(percentage);
}
那么你可以使用模来避免每次更新UI(或控制台或其他):
if (done % 1000 == 0)
{
// Outputs progress only 1 out of 1000 times
double percentage = done / total * 100;
Console.WriteLine(percentage);
}