草庐IT

Performance

全部标签

c# - Linq 中的 ToList 方法

如果我没记错的话,ToList()方法会迭代所提供集合的每个元素并将它们添加到List的新实例并返回此实例。假设一个示例//usinglinqlist=Students.Where(s=>s.Name=="ABC").ToList();//traditionalwayforeach(varstudentinStudents){if(student.Name=="ABC")list.Add(student);}我认为传统方式更快,因为它只循环一次,而上面的Linq为Where方法迭代两次,然后为ToList()方法迭代两次。我现在正在从事的项目广泛使用了列表,我看到有很多这样的ToLis

c# - 比较 XML 节点的高效算法

我想确定XML文档中两个不同的子节点是否相等。如果两个节点具有相同的属性集和子注释并且所有子注释也相等(即整个子树应该相等),则它们应被视为相等。输入文档可能非常大(高达60MB,要比较的节点超过100000个)并且性能是个问题。检查两个节点是否相等的有效方法是什么?示例:HelloWorld此XML片段描述了OpenXML文档中的段落。该算法将用于确定文档是否包含与文档前面的另一个段落具有相同属性(w:pPr节点)的段落(w:p节点)。我的一个想法是将节点的外部XML存储在哈希集中(通常我必须首先获得规范的字符串表示,其中属性和子注释总是以相同的方式排序,但我可以期待我的节点已经是这

c# - 为什么在值类型上隐式调用 toString 会导致框指令

这更像是一个“想知道为什么”而不是一个特定的问题,但请看下面的代码staticvoidMain(string[]args){intval=10;Console.WriteLine("valis{0}",val);//(1)Console.WriteLine("valis{0}",val.ToString());//(2)}情况(1)输出以下ILIL_0000:nopIL_0001:ldc.i4.s10IL_0003:stloc.0IL_0004:ldstr"valis{0}"IL_0009:ldloc.0IL_000a:box[mscorlib]System.Int32IL_000f:

c# - LINQ Lambda 与查询语法性能

我今天在我的项目中看到了一个LINQ查询语法,它正在计算List中具有特定条件的项目,如下所示:inttemp=(fromAinpTaskswhereA.StatusID==(int)BusinessRule.TaskStatus.PendingselectA).ToList().Count();我想通过使用Count(Func)重写它来重构它以使其更具可读性。我认为这在性能方面也会很好,所以我写道:intUnassignedCount=pTasks.Count(x=>x.StatusID==(int)BusinessRule.TaskStatus.Pending);但是当我使用Sto

c# - 如何在 C#(托管代码)中获取 *THREAD* 的 CPU 使用率和/或 RAM 使用率?

我知道如何获取进程的CPU使用率和内存使用率,但我想知道如何在每个线程级别上获取它。如果最好的解决方案是进行一些P调用,那也很好。我需要的例子:ThreadmyThread=Thread.CurrentThread;//sometimelaterinsomeotherfunction...Console.WriteLine(GetThreadSpecificCpuUsage(myThread)); 最佳答案 如前所述,无法回答内存使用情况,因为这是整个进程的一个属性,但CPU使用情况:Processp=Process.GetCurr

c# - .NET 交叉程序集性能下降

我正在阅读BillWagner的书EffectiveC#。在Item32中,他提倡开发人员创建更小、更内聚的程序集,这些程序集可以更容易地重用。然而,在同一项目中,他说:...ExtraSecuritychecksalsoaredoneacrossassemblyboundaries.Allcodefromthesameassemblysamehasthesameleveloftrust(notnecessarilythesameaccessrights,butthesametruthlevel).TheCLRperformssomesecuritycheckswhenevercode

c# - WebConfigurationManager.AppSettings 的缓存?

我有很多读取我的Web配置文件的请求variable=WebConfigurationManager.AppSettings["BLAH"]WebConfigurationManager.AppSettings是每次都从磁盘读取,还是缓存在内存中?如果每次都从磁盘读取它,那么我想我需要将该变量移动到静态变量以提高我的应用程序性能。 最佳答案 配置设置缓存在内存中,每次调用此函数时不会解析web.config。 关于c#-WebConfigurationManager.AppSetting

c# - 为什么在没有约束的泛型方法上将可为 null 的值类型与 null 进行比较会比较慢?

我遇到了一个非常有趣的情况,在泛型方法中比较可为null的类型和null比比较值类型或引用类型慢234倍。代码如下:staticboolIsNull(Tinstance){returninstance==null;}执行代码为:int?a=0;stringb="A";intc=0;varwatch=Stopwatch.StartNew();for(inti=0;i上面代码的输出是:00:00:00.187982700:00:00.000877900:00:00.0008532如您所见,将可为空的int与null进行比较比比较int或字符串慢234倍。如果我添加具有正确约束的第二个重载,

c# - 为什么 .NET group by 在 buckets 数量增长时(非常)慢

给定这段简单的代码和1000万个随机数数组:staticintMain(string[]args){intsize=10000000;intnum=10;//increasenumtoreducenumberofbucketsintnumOfBuckets=size/num;int[]ar=newint[size];Randomr=newRandom();//initializewithrandumnumbersfor(inti=0;ii/num);varl=group.Count();s.Stop();Console.WriteLine(s.ElapsedMilliseconds);

C#:ToArray 性能

这个问题在这里已经有了答案:IsitbettertocallToList()orToArray()inLINQqueries?(16个答案)关闭9年前。背景:我承认我没有尝试对此进行基准测试,但我很好奇...Enumerable.ToArray的CPU/内存特性是什么?(及其表亲Enumerable.ToList)?自IEnumerable没有提前宣传它有多少元素,我(可能天真地)假设ToArray将不得不“猜测”一个初始数组大小,然后如果第一个猜测看起来太小则调整/重新分配数组,如果第二个猜测看起来太小则再次调整它的大小等等......这会给出比线性更差的性能。我可以想象涉及(混合)