获得循环的最大性能

Get Maximum Performance of a loop

我正在尝试对 BigInteger 变量进行计算,然后将结果添加到数据库中。

事情是这样的:

            for (BigInteger i = 0; i < ABigIntegerVariable; i++)
        {
            // add to db and calculate on a BigInteger
        }

所以问题是当我在任务管理器上看到 CPU 使用率只有 8% 左右! 这个循环大约需要 1 小时或更长时间!!!

所以当我尝试计算和添加到数据库时,我没有必要使用计算机。

你能告诉我如何使用具有高计算百分比的 CPU 并改进此过程以获得更快的计算吗?!

谢谢

这是出于多种原因:

1。你的 for 循环在单线程上运行,
2。您在每次迭代中将数据插入数据库,而不是在循环处理完成后批量执行。

建议的解决方案:

1。你可以试试用Parallel.For的方法来加速1。 原因。

示例:https://msdn.microsoft.com/en-us/library/dd460713(v=vs.110).aspx

2。您可以将负责从 for 循环中保存数据的代码移出它以加速 2。原因。

如果循环内的代码可以运行并发

,你可以使用Task/Thread
        for (BigInteger i = 0; i < ABigIntegerVariable; i++)
        {
            Thread thread= new Thread(m =>
            {
                //TODO: do something spectacular with i
            });
            thread.Start(i);
        }