优化(看这个就够了):

不断的累积所遇到的优化和性能方面的问题(友情建议持续关注此文章):

优化一: 字符串

   值类型和引用类型
值类型:int double char bool decimal struct enum 
引用类型:string 数组  自定义类
值类型的值是存储在内存中的栈区
引用类型的值存储在内存中的堆中

内存:栈、堆、方法区

字符串是一个特殊的引用类型。
---->字符串的特点?
1、字符串是不可改变的。
2、字符串的驻留池(节省内存资源)
当我们给一个字符串进行赋值的时候,我们首先回去内存的堆中找一下是否已经存在这个值。
如果存在,则直接将这个值得引用拿过来给变量,如果不存在,则在堆中重新开辟一块新的
空间。
3、字符串可以看做是char类型的只读数组。

在引用传递的时候,如string类型,当赋值后,在堆中开辟了空间,如果不断的改变变量的值,会产生垃圾在堆中。

(优化:尽量减少对string类型的多次赋值)

sting s=string.Empty;                     //  "" 开辟了空间  null 不开辟空间  (新建的时候可以新建 null)

面试的时候如果问:怎么证明sting是引用类型? 引用类型创建时需要赋值。                                

优化二: 遍历

foreach 、for循环遍历选择:

如果需要快速遍历查询选择foreach,因为foreach是一个快速的遍历器。

如果是需要改变内容的话用for循环,foreach不能改变值。

优化三: 装箱 拆箱

以下代码是否发生拆箱或者装箱?

string s="123”;
object  o=n   

答案是没有发生拆装箱,只是内存上的转换,发生拆装箱的前提是:两个数据类型存在着继承的关系,才有可能发生拆装箱。

int n=10;
ICimoarable i=n;

为什么不用非泛型集合ArrayList() ?(性能方面)

            ArrayList list = new ArrayList();
            for (int i = 0; i < 100000; i++)
            {
                list.Add(i);//发生了10000次的装箱操作
            }

 我在北京**天*科技公司曾做了一个 中科院的优化类型的项目,当时的计算速度很慢(慢到用分钟为计量单位),现在我才明白,我用了非泛型集合。

计算一下时间运行时间用Stopwatch  用时 2秒  

            Stopwatch sw = new Stopwatch();
            sw.Start();                sw.Stop();

如果换成泛型list    ---时间便相当少系统的运行时间。

//ArrayList list = new ArrayList();
            List<int> list = new List<int>();

所以为了影响性能,尽量不要发生拆装箱。 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值