如何规避使用不慎,带来的额外的性能开销:
1.确保尽量少的装箱
在自己编写的代码中,应当尽可能地避免编写不必要的装箱代码。
装箱操作会带来性能损耗的原因:
a.首先,会为值类型在托管堆中分配内存。除了值类型本身所分配的内存外,内存总量还要加上类型对象指针和同步块索引所占的内存。
b.将值类型的值赋值到新分配的堆内存中。
c.返回已经成为引用类型的对象的地址。
2.避免分配额外的内存空间
对CLR来说,string对象是个很特殊的对象,它一旦被赋值就不可改变。在运行时调用System.String类中的任何方法或进行任何运算(如“=”、“+”等),都会在内存中创建一个新的字符串对象,要为该新对象分配新的内存空间。
尽量使用StringBuilder进行字符串操作,或者使用string.Format方法进行字符串操作(string.Format方法内部使用StringBuilder进行字符串格式化)。