C#性能优化
Charles雨林
这个作者很懒,什么都没留下…
展开
-
第二篇:循环
在一段程序中,过多的循环很大程度的给服务器施压。但是我们却离不开循环,我们唯一能做的就是最大程度的对其进行优化。 .net对于循环似乎也有特殊的处理,在对某个数组或者集合进行循环时:for(int i=0;i 对于循环我们要遵守以下规则: 1.尽量使用一维零基数组,CLR对一维零基数组使用了特殊的IL操作指令newarr,在访问数组时不需要通过索引减去偏移量来完成,而且JIT也只需原创 2010-04-18 10:32:00 · 296 阅读 · 0 评论 -
第一篇:.net特殊成员:string
string可以说是.net中的非常特殊的一员,它也是.net中使用最频繁,应用最广泛的基本类型之一。 string有三大特性: 1.应用上,string类型表现为值类型;内存中,string类型表现为引用类型,存储在托管堆中。它被称为特殊的引用类型。 2.字串串具有恒定性,一经创建就不能改变。具体而言,字符串一旦被创建,就会在托管堆上分配一块连续的内存空间,我们对其的任何改变都不会影响原创 2010-04-17 10:14:00 · 343 阅读 · 0 评论 -
第三篇:is和as
.net设计is和as是为了轻松的检查类型的兼容性,避免强制转换。 is运算符可以检查对象是否与特定的类型兼容。并返回True或者False。不会抛出异常。 as运算符执行引用类型的显示转换,注意哦,是引用类型。如果不兼容就返回null。不会抛出异常。 无论何时,正确的选择是用as运算符进行类型转换。因为比起盲目的强制转换它更安全,而且在运行时效率更高。 今日c#性能优化明星:as原创 2010-04-19 11:54:00 · 351 阅读 · 0 评论 -
第四篇:垃圾回收
学c++时就知道一个对象用完之后要在析构函数里面Delete掉,然而在c++中强大的析构函数在c#里面已经风采不再,它已经功能退化。取而代之的是c#里面更先进的GC。 下面我将讲一下对于托管资源和非托管资源的垃圾回收。 .net应用程序是在一个托管的环境里运行的,GC为你控制着托管内存。对于托管资源的垃圾回收我们完全可以交给GC去处理,我们要做的就是去掉它所有的引用。垃圾回收器对内存管理原创 2010-04-20 10:46:00 · 404 阅读 · 0 评论 -
第五篇:泛型集合
集合是为了应对数组的大小固定的缺点而生的。如果元素个数是动态的,就应该使用集合类。下面将列出部分经常使用的集合的最佳使用情况: ArrayList最适合用于变化的数据类型。 HashTable最适合用于经常查询的数据。 Queue提供了先进先出存储器,因此在需要按顺序排序的数据时应该使用该集合。 Stack提供了先进后出存储器,因此在需要按逆序排序的数据时应该使用该集合。 Sorte原创 2010-04-22 09:34:00 · 353 阅读 · 0 评论 -
第七篇:struct和class
struct和class有一个很大的区别:struct是值类型,存储在堆栈上;class是引用类型,存储在托管堆上。class支持继承,可以继承自类和接口;而struct没有继承性,struct不能从class继承,也不能作为class 的基类。class可以声明无参构造函数,可以声明析构函数;而 struct 只能声明带参数构造函数,且不能声明析构函数。实例化时,class 要使用new 关原创 2010-04-23 08:51:00 · 569 阅读 · 0 评论 -
第六篇:异常
首先我们先讲一下try/catch/finally各自的职责和最佳用法 try块包含的代码组成了程序的的正常操作部分。 catch块包含的代码处理各种错误。 finally块包含的代码清理资源或执行要在try或catch块末尾执行的其它操作。无论是否产生异常都会执行finally块。 private bool test() { try {原创 2010-04-23 08:51:00 · 359 阅读 · 0 评论 -
第八篇:一些规则习惯
下面简略的讲几条关于性能优化的规则习惯: 1.尽量在子类中重写ToString()方法。ToString方法是System.Object提供的一个公有的虚方法,.NET中任何类型都可继承 System.Object类型提供的实现方法,默认为返回类型全路径名称。在自定义类或结构中重写 ToString 方法,除了可以有效控制输出结果,还能在一定程度上减少装箱操作的发生。 public str原创 2010-04-26 15:28:00 · 513 阅读 · 0 评论