草庐IT

Performance

全部标签

c# - 缓存或不缓存 - GetCustomAttributes

我目前有一个功能:publicstaticAttributeGetAttribute(MemberInfoMember,TypeAttributeType){Object[]Attributes=Member.GetCustomAttributes(AttributeType,true);if(Attributes.Length>0)return(Attribute)Attributes[0];elsereturnnull;}我想知道是否值得将一个属性的所有属性缓存到一个Attribute=_cache[MemberInfo][Type]字典,这需要使用不带任何类型参数的GetCust

c# - 在 C# 中将二维数组归零的最快方法

我有一个二维数组,我想将其清除并重置为0值。我知道如何使用Array.Clear()清除向量(一维数组),但我不知道清除二维矩阵的最佳方法。doubleD=newdouble[10];Array.Clear(D,0,D.Length);如何清除一个2DNxM数组doubleD[,]=newdouble[N,M];感谢您提供的任何帮助。 最佳答案 Array.Clear也适用于多维数组:double[,]D=newdouble[M,N];Array.Clear(D,0,D.Length);注意,不需要自己计算长度,因为Length属性

c# - 使用预计算平移数组的快速正弦/余弦

我有以下代码使用预先计算的内存表执行Sin/Cos函数。在下面的例子中,表格有1024*128个项目,涵盖了从0到2pi的所有Sin/Cos值。我知道我可以使用Sin/Cos对称性并仅保留1/4的值,但在计算值时我会有更多的“如果”。privateconstdoublePI2=Math.PI*2.0;privateconstintTABLE_SIZE=1024*128;privateconstdoubleTABLE_SIZE_D=(double)TABLE_SIZE;privateconstdoubleFACTOR=TABLE_SIZE_D/PI2;privatestaticdoubl

c# - 提高使用 .NET 枚举文件和文件夹的性能

我有一个包含数千个文件夹的基本目录。在这些文件夹中,可以有1到20个子文件夹,其中包含1到10个文件。我想删除所有超过60天的文件。我使用下面的代码来获取我必须删除的文件列表:DirectoryInfodirInfo=newDirectoryInfo(myBaseDirectory);FileInfo[]oldFiles=dirInfo.GetFiles("*.*",SearchOption.AllDirectories).Where(t=>t.CreationTime但是我让它运行了大约30分钟,但它仍然没有完成。我很好奇是否有人能看到我有可能提高上述行的性能,或者是否有不同的方法我

c# - 可以快速调整大小的数组

我正在寻找一种数组数据类型,它可以轻松添加项目,而不会影响性能。System.Array-RedimPreserve将整个RAM从旧的复制到新的,速度与现有元素的数量一样慢System.Collections.ArrayList-够好吗?System.Collections.IList-够好吗? 最佳答案 简单总结几个数据结构:System.Collections.ArrayList:无类型数据结构已过时。请改用List(oft)。System.Collections.Generic.List(oft):这表示一个可调整大小的数组。

c# - 解决链式计算的最快方法

我有这样的输入stringinput="14+2*32/60+43-7+3-1+0*7+87-32/34";//upto10MBstringsizeintresult=Calc(input);//11计算是从左到右,逐个数数字是0到99忽略加法之前的乘法,所以14+2*32是512可能的计算是+-*/不能除以0,所以在/之后不能是0我的方法publicstaticintCalc(stringsInput){intiCurrent=sInput.IndexOf('');intiResult=int.Parse(sInput.Substring(0,iCurrent));intiNext=

c# - 高效笛卡尔积算法

有人可以为我演示一种比我目前使用的算法更有效的笛卡尔积算法(假设有一个)。我环顾四周并用谷歌搜索了一下,但看不到任何明显的东西,所以我可能会遗漏一些东西。foreach(intiinis){foreach(intjinjs){//Pairiandj}}这是我在代码中所做的高度简化的版本。这两个整数是查找键,用于检索一个/多个对象,并且将来自两个查找的所有对象配对成新对象。这个小代码块在一个更大更复杂的系统中成为一个主要的性能瓶颈,因为它运行的数据集规模很大。通过改进用于存储对象的数据结构和所涉及的查找,可能会减轻其中一些问题,但我认为主要问题仍然是笛卡尔积本身的计算。编辑关于我对算法的

c# - 替代if,else if

我有很多if,elseif语句,我知道必须有更好的方法来做到这一点,但即使在搜索stackoverflow之后,我也不确定在我的特定情况下该怎么做。我正在解析文本文件(账单)并根据某些字符串是否出现在账单上将服务提供商的名称分配给变量(txtv​​ar.Provider)。这是我正在做的事情的一小部分(别笑,我知道这很乱)。总而言之,大约有300个if,elseif。if(txtvar.BillText.IndexOf("SWGAS.COM")>-1){txtvar.Provider="SouthwestGas";}elseif(txtvar.BillText.IndexOf("geo

c# - RabbitMQ:erl.exe 占用高 CPU 使用率

我在我的应用程序中实现了rabbitmq,它在WindowsServer2008服务器上运行,问题是erl.exe占用了很高的CPU使用率,有时它达到40-45%的CPU使用率,即使在理想情况下(不处理时)任何队列)它至少需要4-15%的CPU使用率。CPU使用率高的原因可能是什么?是否有任何设置或任何其他我需要做的事情。 最佳答案 你说即使不处理队列,它仍然在4-15%,但是你的应用程序在运行吗?如果您以前没有,请在没有应用程序使用Rabbit时尝试监视erl。想到的一件事是,您可能在循环中使用QueingBasicConsume

c# - 为什么我的 string.indexof(char) 更快?

不要问我是怎么到那儿的,但我一直在玩弄一些掩码、循环展开等。无论如何,出于兴趣,我在考虑如何实现一个indexof方法,长话短说,所有除了屏蔽等,这个天真的实现:publicstaticunsafeintIndexOf16(strings,intstartIndex,charc){if(startIndex=s.Length)thrownewArgumentOutOfRangeException("startIndex");fixed(char*cs=s){for(inti=startIndex;i比string.IndexOf(char)快。我写了一些简单的测试,它似乎与输出完全匹配