Tag: 性能

如何通过类实例的属性值对包含类对象的数组进行排序?

可能重复: 如何通过C#中的特定字段对对象数组进行排序? 给出以下代码: MyClass myClass; MyClassArray[] myClassArray = new MyClassArray[10]; for(int i; i < 10; i++;) { myClassArray[i] = new myClass(); myClassArray[i].Name = GenerateRandomName(); } 最终结果可能如下所示: myClassArray[0].Name //’John’; myClassArray[1].Name //’Jess’; myClassArray[2].Name //’James’; 你将如何按字母顺序根据myClass.Name属性对MyClassArray []数组进行排序,这样数组最终会如下所示: myClassArray[0].Name //’James’; myClassArray[1].Name //’Jess’; myClassArray[2].Name //’John’; *编辑 :我正在使用VS 2005 / .NET 2.0。

在循环外移动变量声明是否实际上提高了性能?

我正在编写处理器密集型加密代码(C#),所以无论多小,我都在寻找任何性能提升。 我在这个问题上听到过两种意见。 是否有任何性能优势 int smallPrime, spGen; for (int i = 0; i < numSmallPrimes; i++) { smallPrime = smallPrimes[i]; spGen = spHexGen[i]; […] } 在这? for (int i = 0; i < numSmallPrimes; i++) { int smallPrime = smallPrimes[i]; int spGen = spHexGen[i]; […] } 编译器是否已经这样做了?

性能低 – 单击重定向链接后运行的ASP .NET ASPNET_WP.EXE和CSC.EXE

我点击一个页面上的链接,该页面重定向到另一个页面(Response.Redirect(page.aspx))。 浏览器搅拌约30秒,页面显示。 我试图找出加载页面需要这么长时间的原因。 该页面包含两个其他自定义控件。 我已经注释掉了每个控件和两个控件的代码行,页面仍然需要大约30秒才能加载。 我为每个控件和page.aspx设置了Page_Load事件的断点,并且点击带有Response.Redirect的链接到第一个断点也需要大约30秒。 我加载了任务管理器并点击了链接。 我注意到aspnet_wp.exe和csc.exe在这30秒的时间范围内运行。 我想知道在等待页面加载的时候是否存在某种代码隐藏的shinanigans。 这仅在我第一次点击链接时发生。 之后,它并没有那么慢。 我用谷歌搜索了,但没有很多有用的信息。 有人有主意吗? 谢谢, – -担 – –

为什么使用平均值时图表会很尖锐?

我在我的WCF服务中使用messageInspectors来测量每个服务方法的经过时间,如下所示: public void AfterCall(string operationName, object[] outputs, object returnValue, object correlationState) { if (_activated) { _startTime.Stop(); PerformanceCounterHandler.Instance.SetAveragePerformanceCounter(operationName, _startTime.ElapsedTicks); } } public object BeforeCall(string operationName, object[] inputs) { Guid correlationState; if (_activated) { correlationState = Guid.NewGuid(); _startTime = new Stopwatch(); _startTime.Start(); return correlationState; } return null; } 这是计数器的注册方式 foreach (string methodName in ServiceMethodNames) { counter = […]

.NET跨组件性能命中

我正在阅读Bill Wagner的书“ Effective C#” 。 在第32项中,他主张开发人员创建更小,更有凝聚力的组件,可以更容易地重用。 然而,在同一个项目中,他说: …额外的安全检查也是跨程序集边界完成的。 来自同一程序集的所有代码具有相同的信任级别(不一定是相同的访问权限,但具有相同的真实级别)。 每当代码流穿过程序集边界时,CLR都会执行一些安全检查。 程序流越过汇编边界的次数越少,效率就越高……这些性能问题都不能阻止您分解太大的程序集。 表现罚款很轻微。 我的问题是,是否对Foo.dll中的每个方法调用执行了额外的安全检查,还是仅在第一次加载程序集时执行? 谢谢

内部使用属性有什么好处?

当从类外部访问成员时,封装显然是有用且必不可少的,但是当在内部引用类变量时,调用其私有成员或使用其getter更好吗? 如果你的getter只是返回变量, 那么性能是否存在差异 ?

在“out”参数中传递值类型会导致变量被装箱吗?

我知道拳击和拆箱在性能方面相对昂贵 。 我想知道的是: 将值类型传递给方法的out参数会导致变量的装箱/取消装箱(从而导致性能下降)吗? 编译器可以优化它吗? int number; bool result = Int32.TryParse(value, out number);

内存缓存.Net 4.0性能测试:惊人的结果

此性能测试是错误的还是系统缓存正在以卓越的性能运行? 这是我的结果: [13]交互次数100000:63毫秒 [14]交互次数100000:139毫秒 [12]交互次数100000:47毫秒 [15]交互次数100000:44毫秒 测试结束。 硬件:x86 Family 6 Model 23 Stepping GenuineIntel~2992 Mhz 3.327 MB,5.1.2600 Service Pack 3 using System; using System.Collections.Generic; using System.Runtime.Caching; using System.Diagnostics; using System.Threading; namespace CacheNet40 { public class CacheTest { private ObjectCache cache; public CacheTest() { cache = MemoryCache.Default; } public void AddItem(CacheItem item, double span) { CacheItemPolicy […]

generics与数组列表

我在这里工作的系统是在.net 2.0之前编写的,并没有使用generics。 它最终更新为2.0,但由于时间限制,没有任何代码被重构。 在许多地方,代码使用ArraysLists等将事物存储为对象。 从性能角度来看,将代码更改为使用generics有多重要? 我从性能的角度来看,拳击和拆箱等等,这是低效的,但实际上有多少性能增益会改变呢? 仿制药是否可以在前进的基础上使用,或者是否有足够的性能变化,以便为更新旧代码做出良心努力?

在背靠背for循环中的int,short,byte性能

(背景: 为什么我应该在C#中使用int而不是字节或short ) 为了满足我自己对使用“适当大小”整数与“优化”整数的优缺点的好奇心,我编写了以下代码,这些代码强化了我以前在.Net中对int性能的真实性(并在链接中对此进行了解释)以上)它是针对int性能而不是short或byte进行优化的。 DateTime t; long a, b, c; t = DateTime.Now; for (int index = 0; index < 127; index++) { Console.WriteLine(index.ToString()); } a = DateTime.Now.Ticks – t.Ticks; t = DateTime.Now; for (short index = 0; index < 127; index++) { Console.WriteLine(index.ToString()); } b=DateTime.Now.Ticks – t.Ticks; t = DateTime.Now; for (byte index = […]