【C#/.NET-最小并行化的Quicksort导致性能下降】教程文章相关的互联网学习教程文章

c# – PLINQ没有提高性能【代码】

我写了一个LINQ来查找文本文件中唯一字符的频率.我还在select的帮助下将我的初始结果转换为一个对象.最终的结果以List的形式出现.以下是我使用过的查询.charNodes = inputString.GroupBy(ch => ch).Select((ch) => new TNode(ch.Key.ToString(),ch.Count())).ToList<TNode>();我有一个四核机器运行,上面的查询运行在15ms.但奇怪的是,我需要更多的时间PLINQ相同的查询.下面一个花了大约40ms.charNodes = inputString.GroupBy(ch => ...

c# – 实体框架6 – GetExecutionPlan性能命中

我正在使用Entity Framework 6执行一个非常复杂的查询,整个查询构建在标准的IQueryable<>上.界面由DbContext提供. 即使生成的查询非常复杂,它也会在数据库服务器上以几毫秒的速度执行.所有执行的连接都是合理的,似乎它都使用了正确的索引. 但是当我使用dotTrace分析应用程序时,我发现实体框架正在准备执行计划(System.Data.Entity.Core.Objects.ELinq.ELinqQueryState.GetExecutionPlan)时花费大约1-2秒.在这种情况下,实体框架似乎...

c# – 使用通配符的活动目录查询性能较差【代码】

我在C#中编写一个方法,该方法应查询Active Directory并查找显示名称格式为{displayName}的所有用户和组(带有前导和尾随通配符的通配符搜索),该方法将用于自动完成字段. 问题是我写的方法的性能非常差,尝试查询AD需要30秒到一分钟之间的任何内容,具体取决于查询字符串. 我的组织的AD非常大,但如果需要很长时间,自动完成字段将毫无意义. 这是我现在使用的代码:// Intialize the results list. result.queryResult = new List<Classs...

C#具有泛型的类的性能【代码】

考虑一组从基本元素派生的元素.// "Abstract" general element class class AElement {public int Key; }// Specific element class implementation class BElement : AElement { }我想存储在列表中.这两个选项:List<AElement> aData = new List<AElement>(); List<BElement> bData = new List<BElement>();如果将BElement添加到aData和bData列表,并对两者执行操作,则bData版本明显快于aData版本.例如,如果使用转储通用BubbleSort...

c# – WebMethod性能下降【代码】

我有一个使用jQuery的非常基本的JavaScript AJAX请求:$.ajax({type: "POST",url: "TabbedSummaryPage.aspx/RunReport",data: "{'itemId': '', 'lType': '', 'reportId': '', 'requestXml': ''}",contentType: "application/json",dataType: "json",success: function (data, textStatus, jqXHR) {},error: function (jqXHR, textStatus, errorThrown) {},complete: function (jqXHR, textStatus) {} });这是调用并执行以下C#代码:...

c# – 过滤ICollectionView时性能下降【代码】

在使用MVVM的WPF应用程序中,我查询数据库以获取客户端的ObservableCollection,创建ICollectionView并应用过滤器函数. 在我的usercontrol上,我将用于过滤器的文本绑定到文本框,将ICollectionView绑定到列表框. ICollectionView最初包含1104个客户端(只是ClientID和ClientName). 从数据库中检索数据非常快.但是,列表框大约需要4秒才能填充. 当我在过滤器中输入文本时,如果要返回的客户端数量较少,则列表框会相对较快地重绘.但是,如果...

C#性能 – 线性阵列访问与随机访问【代码】

有人可以帮助我理解为什么使用索引的线性增量访问数组大约比使用随机索引快3-4倍? 有没有办法让随机索引访问时间更快? 请考虑以下测试代码,线性返回约3秒,随机返回约9-10秒:public static void test(){var arr = new byte[64 * 1024 * 1024];byte b = 0;var sw = new Stopwatch();double timeSum = 0;for (var i = 0; i < arr.Length; i++){sw.Restart();b = arr[i];sw.Stop();timeSum += sw.Elapsed.TotalMilliseconds;}Consol...

c# – 导入“不相关”的dll会导致性能下降吗?

我正在使用c#.在许多情况下,我编写的代码可以从位于“不相关”的dll中的非常简单的类/方法中受益.例如,我正在编写一些没有UI的算法,但它可以从System.Drawing中的Point类中受益,或者我需要System.Web中的一些xml操作方法,即使我正在编写一个控制台应用程序(这些只是示例) ). 除了“代码味道” – 导入大型程序集以获得一小部分功能会有性能损失吗?解决方法:是的,与加载程序集相关的性能损失(例如,加载程序集需要验证并占用进程的地...

c# – 将WPF项目从3.5迁移到4.0后,可能导致性能下降的原因是什么?

当我将我的应用程序编译到目标版本的4.0框架时,UI性能直接下降到地狱.例如,打开包含可能有6个Label和TextBox控件的Grid的Expander从近瞬时到3-4秒,然后在它渲染网格的第二列(可编辑控件)和首先(他们的标签). 如果我回到3.5,一切都回到原来的样子:打开扩展器和看到它的内容之间几乎没有任何延迟,并且网格中的标签渲染得如此之快,以至于你无法看到它发生. 当然,有一百万件事可能会导致这种情况.我想我希望有人可以告诉我的是我应该开...

c# – 在两种不同的场景中锁定性能【代码】

我有一个包含2个内联列表的类,其中包含超过1000个这样的元素,public class A {private List<long> aList = new List<long>();private List<long> bList = new List<long>();void MethodThatUsesAList(){//Works with aList}void MethodThatUsesBList(){//Works with bList}void MethodThatUsesBoth(){//Works with both lists} }现在,我想让这个类线程安全,我有两种不同的场景,我看到使用锁,首先是创建object _synchObject = new o...

c# – 在普通p / Invoke调用中使用不安全的P / Invoke调用是否有性能优势?

我希望使用P / Invoke来允许我的C#程序集与本机C库互操作;这需要是跨平台的(即Mono),因此不能使用混合模式组件.我想知道使用不安全的P / invoke调用以及处理不安全方法中指针的所有转换是否有任何性能优势,而不是进行典型的“安全”P / Invoke调用.提前致谢! 澄清:我不打算使用托管C包装器,如here所讨论的那样.我只想知道以下两者之间是否存在性能差异: extern static void native_call_here(IntPtr parameter1,String paramete...

c# – 从网络共享运行的.net应用程序的性能问题【代码】

我有Windows窗体(.net 4)应用程序的问题.我们的一个客户希望从网络共享运行它(我们的应用程序可以同时由20-300个用户使用).我们能够通过将此行添加到app.config来使其工作<loadFromRemoteSources enabled="true" /> 启动程序需要一些时间,用户可以使用一段时间.不幸的是,他们注意到当应用程序未使用一段时间并且他们想再次使用它时,响应非常缓慢(“唤醒”应用程序大约需要1-3分钟).至少这是我从顾问那里听到的. 我可能会在下周一自...

c# – 如何提高此扫雷算法的性能?【代码】

我目前正在制作扫雷克隆.我做了一个算法,当点击一个有0个周围地雷的瓷砖时,会发现所有邻居都有0个周围的地雷,然后他们的所有邻居都有0个周围的地雷……(递归).此结果只需点击一下: 它的工作原理应该如此,但它太慢了.最初的扫雷队员立刻展示了这些瓷砖,但就我而言,它们在揭示之间有一点延迟. 我写了这段代码:private void RevealNeighbor(int x, int y) {foreach(var neighbor in _neighbors) {try {Tile tile = _tiles[x + neigh...

c# – 注入通用getter和setter以获得比反射更好的性能【代码】

我试图编写一个高级网络库(主要是为了好玩),用户可以通过派生类轻松定义他们的数据包.这样解析消息很简单.用户数据包应仅包含基本值types. 为了做到这一点,我需要访问每个用户定义的数据包的每个字段.这个问题可以通过反射很容易地完成,但由于反射很慢,我无法使用它.为了快速做到这一点,我创建了一个类,在运行时为每个用户定义的数据包字段注入getter和setter(在StackOverflow上找到它). getter是Func< UserDefinedPacket,fieldTyp...

c# – 跨越不同性能计数器的性能计数器实例【代码】

我所看到的是我的性能计数器实例被添加到指定计数器之外的性能类别中的其他计数器. 给出以下代码:using System; using System.Diagnostics; using System.Threading; using System.Threading.Tasks;namespace ConsoleApplication26 {class Program{static void Main(string[] args){string category = "Foo";string categoryHelp = "Test counters";string fooCounter1Name = "Test Foo counter 1";string fooCounter1InstanceNam...