草庐IT

高性能

全部标签

c# - 编译的 C# lambda 表达式性能与叠层

考虑这个类://////Dummyimplementationofaparserforthepurposeofthetest///classParser{publicListReadList(FuncreadFunctor){returnEnumerable.Range(0,10).Select(i=>readFunctor()).ToList();}publicintReadInt32(){return12;}publicstringReadString(){return"string";}}我尝试使用已编译的lambda表达式树生成以下调用:Parserparser=newPars

c# - 在关注性能时,为 DateTime.Today 使用变量有多重要?

我刚看到thisupvotedcommentIIRCDateTime.Todayisaquiteexpensivecall,soyoubetterstorethevalueinavariablefirst.这是对包含代码的帖子的回应:varfirst=newDateTime(DateTime.Today.Year,DateTime.Today.Month,1).AddMonths(-1);varlast=newDateTime(DateTime.Today.Year,DateTime.Today.Month,1).AddDays(-1);如果我希望提高性能,将DateTime.Toda

c# - 使用具体类型而不是接口(interface)在性能方面是否更好

我遇到了一些规则(建议)来使用具体的List和Dictionary而不是IList和IDictionary,鉴于显示通过界面访问的示例测试要慢得多。例如,将10000个值添加到列表,然后对列表执行Count10亿次表明通过接口(interface)执行此操作比通过具体类执行慢28倍。也就是说,通过具体类需要80毫秒,通过接口(interface)需要2800毫秒,这表明通过接口(interface)的速度真的很慢。鉴于此,使用具体类是合理的。界面这么慢是有原因的吗?(可能更针对那些更了解.net内部结构的人)。 最佳答案 我认为如果

c# - MethodInfo.Invoke 性能问题

我正在从一个文件中读取和写入数据。文件中的数据可以是float、double、整数等。直到运行时才知道类型。我将文件中存储的数据类型称为Tin。数据从Tout类型的数组中读取或写入。这种类型在运行时也是未知的。代码序列是这样的。在已知Tin和Tout的Open方法中,我们可以为已知数据类型创建读写方法。Open(...){MethodInfoReadMethod=typeof(...)GetMethod("ReadGeneric").MakeGenericMethod(newType[]{typeof(Tin),typeof(Tout)}));}读写循环重复数百万次并依靠反射来调用适当

c# - 静态构造函数会导致性能开销?

最近在dotnetpearls.com上阅读一篇文章here说静态ctors会受到大量的性能影响。不明白为什么? 最佳答案 我认为在大多数用例中“大量”是一种夸大其词。由于beforefieldinitflag的存在/不存在,拥有静态构造函数(即使它什么也不做)会影响类型初始化时间.当你有一个静态构造函数时,对时间有更严格的保证。对于大多数代码,我认为这没有太大区别-但如果您是紧密循环并访问类的静态成员,则可能会有所不同。就我个人而言,我不会太担心它-如果您怀疑它与您的真实应用程序相关,那么测试它而不是猜测。微基准测试很可能会夸大此

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

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

c# - List.Insert 有任何性能损失吗?

给定一个列表:ListSomeList=newList();正在做:SomeList.Insert(i,val);对比SomeList.Add(val);有任何性能损失吗?如果是,如何取决于:-i-插入索引-SomeList.Count-列表的大小 最佳答案 TheListclassisthegenericequivalentoftheArrayListclass.ItimplementstheIListgenericinterfaceusinganarraywhosesizeisdynamicallyincreasedasrequ

c# - DI/IoC 容器性能基准比较?

我找到了一些2008年的基准测试结果,用于测试几个顶级.NETDI/IoC容器的性能here.但我一直无法找到任何更新的结果。是否有任何基准可以比较一些大型IoC容器(StructureMap、Unity、Ninject、Autofac、CaSTLeWindsor等)? 最佳答案 我不建议使用性能基准来选择IoC容器。还有很多很多更重要的因素,比如功能集、开发路线图和可维护性等。请注意,在最坏的情况下,您引用的基准测试在超过100万次调用时仅显示出3-4倍的速度差异。在“真实世界”场景中,DI/IoC用于连接依赖项,并且对整体应用程

c# - string.IndexOf OrdinalIgnoreCase 与 CurrentCultureIgnoreCase 的性能

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Stringcomparisonindotnetframework4我注意到我机器上的一个UI应用程序存在性能问题,该应用程序正在执行大量字符串比较以过滤大型列表。我将问题追溯到在对string.IndexOf的调用中使用OrdinalIgnoreCase。以下基准测试是在没有附加调试器的情况下在Release中运行的,它是一个在VS2010、Windows7中构建的4.0项目,我在这台机器上安装了4.5beta,我不确定这是否会影响它。1.190secondsforOrdinalIgnoreCase0.17

C# 字典性能 : Default string Comparer's GetHashCode() allocates memory in violation of guidelines, 从而破坏性能?

有anestablishedguideline获取哈希码不应分配内存,因为这会通过调用垃圾收集器对哈希表查找产生负面影响。然而,这个确切的失败是我所看到的我使用System.Collections.Generic.Dictionary的应用程序的配置文件在一个非常紧凑的循环中,我在分析器结果中发现以下内容:[3.47%]TryGetValue(TKey,TValue&)(...字典)[3.47%]FindEntry(TKey)(...字典)[3.47%]GetHashCode(string)(System.CultureAwareComparer)[3.46%]GetHashCodeO