草庐IT

parallel-collections

全部标签

c# - 即使MSDN另有建议,为什么Parallel.ForEach比AsParallel()。ForAll()快得多?

我一直在做一些调查,以了解如何创建运行在树上的多线程应用程序。为了找到最佳方法,我创建了一个测试应用程序,该应用程序通过C:\磁盘运行并打开所有目录。classProgram{staticvoidMain(string[]args){//varstartDirectory=@"C:\Thefolder\RecursiveFolder";varstartDirectory=@"C:\";varw=Stopwatch.StartNew();ThisIsARecursiveFunction(startDirectory);Console.WriteLine("Elapsedseconds:"

c# - 创建一个 NUnit 约束,意思是 "{collection} does not contain {item}"

我正在努力断言枚举中缺少特定项目。具体来说,我的测试是这样的://Takeanitemfromaqueueofscheduleditems...ItemQueuependingQueue=schedule.PendingItems;//PendingItemsisanIEnumerableintitem=pendingQueue.FirstItem;//...processtheitem...processor.DoSomethingWith(item);//...andtheschedulemustnotcontaintheitemanymore:Assert.That(schedu

c# - 创建一个 NUnit 约束,意思是 "{collection} does not contain {item}"

我正在努力断言枚举中缺少特定项目。具体来说,我的测试是这样的://Takeanitemfromaqueueofscheduleditems...ItemQueuependingQueue=schedule.PendingItems;//PendingItemsisanIEnumerableintitem=pendingQueue.FirstItem;//...processtheitem...processor.DoSomethingWith(item);//...andtheschedulemustnotcontaintheitemanymore:Assert.That(schedu

c# - VS2015升级后的垃圾回收和Parallel.ForEach问题

我有一些代码可以在我自己的类RC#DataFrame类中处理数百万行数据。有许多Parallel.ForEach调用用于并行迭代数据行。此代码已使用VS2013和.NET4.5运行了一年多,没有出现任何问题。我有两台开发机器(A和B),最近将机器A升级到VS2015。大约有一半时间我开始注意到我的代码出现奇怪的间歇性卡住。让它运行很长时间,事实证明代码最终确实完成了。只需15-120分钟,而不是1-2分钟。由于某种原因,使用VS2015调试器尝试破解所有内容的尝试不断失败。所以我插入了一堆日志语句。事实证明,当在Parallel.ForEach循环期间存在Gen2集合时(比较每个Par

c# - VS2015升级后的垃圾回收和Parallel.ForEach问题

我有一些代码可以在我自己的类RC#DataFrame类中处理数百万行数据。有许多Parallel.ForEach调用用于并行迭代数据行。此代码已使用VS2013和.NET4.5运行了一年多,没有出现任何问题。我有两台开发机器(A和B),最近将机器A升级到VS2015。大约有一半时间我开始注意到我的代码出现奇怪的间歇性卡住。让它运行很长时间,事实证明代码最终确实完成了。只需15-120分钟,而不是1-2分钟。由于某种原因,使用VS2015调试器尝试破解所有内容的尝试不断失败。所以我插入了一堆日志语句。事实证明,当在Parallel.ForEach循环期间存在Gen2集合时(比较每个Par

c# - 无法比较类型为 'System.Collections.Generic.ICollection`的元素 1 只支持原始类型、枚举类型和实体类型

这段代码是我写的IQueryablesites=context.MainTable.Include("RelatedTable");if(!string.IsNullOrEmpty(param1)){sites=sites.Where(s=>s.RelatedTable!=null&&s.RelatedTable.Any(p=>p.Name==param1.ToLower()&&p.PolicyType=="primary"));}foreach(stringsecondaryPolicyinsecondaryPolicies){sites=sites.Where(s=>s.Relat

c# - 无法比较类型为 'System.Collections.Generic.ICollection`的元素 1 只支持原始类型、枚举类型和实体类型

这段代码是我写的IQueryablesites=context.MainTable.Include("RelatedTable");if(!string.IsNullOrEmpty(param1)){sites=sites.Where(s=>s.RelatedTable!=null&&s.RelatedTable.Any(p=>p.Name==param1.ToLower()&&p.PolicyType=="primary"));}foreach(stringsecondaryPolicyinsecondaryPolicies){sites=sites.Where(s=>s.Relat

c# - 是否可以限制 Parallel.ForEach 的内核数?

我在我的代码中使用了Parallel.ForEach。我所有的8个核心都达到100%。这对服务器上运行的其他应用程序不利。是否可以将执行限制为4个核心? 最佳答案 将ParallelOptions的实例传递给ParallelOptions.MaxDegreeOfParallelism设置为4到Parallel.ForEach。尽管如此,这在其他机器上可能没有意义,它们的内核可能比您多或少。通常,您应该让框架决定并行度。 关于c#-是否可以限制Parallel.ForEach的内核数?,我

c# - 是否可以限制 Parallel.ForEach 的内核数?

我在我的代码中使用了Parallel.ForEach。我所有的8个核心都达到100%。这对服务器上运行的其他应用程序不利。是否可以将执行限制为4个核心? 最佳答案 将ParallelOptions的实例传递给ParallelOptions.MaxDegreeOfParallelism设置为4到Parallel.ForEach。尽管如此,这在其他机器上可能没有意义,它们的内核可能比您多或少。通常,您应该让框架决定并行度。 关于c#-是否可以限制Parallel.ForEach的内核数?,我

c# - 无法将 List<T> 隐式转换为 Collection<T>

这是一个编译器错误(为了便于阅读而略有更改)。这个问题一直困扰着我。FxCop告诉我们返回List是一件坏事和派生自Collection的类作为返回类型应该更可取。此外,FxCop表示可以使用List用于内部数据存储/操作。好的,我明白了,但我不明白为什么编译器提示试图隐式转换List至Collection.不是List更多界面收费和功能?为什么禁止隐式转换?还有另一个问题来自上面:是newList(somecollection)构造函数贵吗? 最佳答案 为什么不只执行以下操作:Collectioncollection=newCol