我在我的代码中使用了parallel for循环来在大量实体(12,000)上运行长时间运行的进程。低效Parallel.For?
该进程解析一个字符串,通过一些输入文件(我已经读过,基于IO的线程的好处数量可能有问题,但它似乎已经加快了其他地方的速度)和输出一个匹配的结果。
最初,这个过程非常快 - 但最终会放慢抓取。有可能它只是遇到了一些特别棘手的输入数据,但这似乎不太可能更接近于事物。
在循环中,我添加了一些调试代码,它在开始/结束迭代时打印“开始处理:”和“完成处理:”,然后编写一个将开始和结束对齐的程序,最初是为了找到哪个ID导致崩溃。
然而,看看不匹配的ID的数量,它看起来像程序一次处理超过400个不同的实体。这看起来像是大量的IO,它可能是问题的根源。
所以我的问题(s)为(是)这个(这些):
- 难道我解释了无与伦比的ID的正确,或者是有一些聪明的东西去的场面我的思念,或力挺明显的东西?
- 如果您同意我发现的内容是正确的,那么我怎样才能限制它一次旋转的数量?
我意识到这可能是一个有点非正统的问题,因为没有代码,可能会很棘手,但任何帮助表示赞赏,如果有任何更多的信息,你想要让我知道在评论中。
你可能是对的,但是,我们怎么知道你没有看到你在做什么。线程之间的争用在哪里? – Jodrell