在列表中每x%更新一次屏幕的计算成本较低的方法是什么?

本文关键字:计算 是什么 方法 屏幕 一次 列表 更新 | 更新日期: 2023-09-27 18:05:17

我有一个IEnumerable列表,我必须对列表中的每个项目进行长时间运行操作。该列表中可能有5000万到5000万个项目。

我有列表中对象的总数,并且我使用foreach来遍历列表。

我希望每x%的数据写入到控制台,x通常用于较大的数据集,而较少用于较小的数据集。

如果写入距离完全相同(即100项为10% 20%,更大的项为1.01% 1.02%)将是一个额外的好处

温柔点,这是我第一个SO问题!:)

在列表中每x%更新一次屏幕的计算成本较低的方法是什么?

我有列表中对象的总数,我使用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);
}