建议1:正确操作字符串

如何规避使用不慎,带来的额外的性能开销:

1.确保尽量少的装箱

在自己编写的代码中,应当尽可能地避免编写不必要的装箱代码。

装箱操作会带来性能损耗的原因:

a.首先,会为值类型在托管堆中分配内存。除了值类型本身所分配的内存外,内存总量还要加上类型对象指针和同步块索引所占的内存。

b.将值类型的值赋值到新分配的堆内存中。

c.返回已经成为引用类型的对象的地址。

2.避免分配额外的内存空间

对CLR来说,string对象是个很特殊的对象,它一旦被赋值就不可改变。在运行时调用System.String类中的任何方法或进行任何运算(如“=”、“+”等),都会在内存中创建一个新的字符串对象,要为该新对象分配新的内存空间。

尽量使用StringBuilder进行字符串操作,或者使用string.Format方法进行字符串操作(string.Format方法内部使用StringBuilder进行字符串格式化)。

时间: 2024-12-04 11:40:50

建议1:正确操作字符串的相关文章

编写高质量代码改善C#程序的157个建议[正确操作字符串、使用默认转型方法、却别对待强制转换与as和is]

前言 本文主要来学习记录前三个建议. 建议1.正确操作字符串 建议2.使用默认转型方法 建议3.区别对待强制转换与as和is 其中有很多需要理解的东西,有些地方可能理解的不太到位,还望指正. 建议1.正确操作字符串 字符串应该是所有编程语言中使用最频繁的一种基础数据类型.如果使用不慎,我们就会为一次字符串的操作所带来的额外性能开销而付出代价.本条建议将从两个方面来探讨如何规避这类性能开销: 1.确保尽量少的装箱 2.避免分配额外的内存空间 先来介绍第一个方面,请看下面的两行代码: String

编写高质量代码改善C#程序的157个建议——建议1:正确操作字符串

最近拜读了陆敏技老师的<编写高质量代码改善C#程序的157个建议>,感觉不错,决定把笔记整理一遍. 建议1: 正确操作字符串 字符串应该是所有编程语言中使用最频繁的一种基础数据类型.如果使用不慎,我们就会为一次字符串的操作所带来的额外性能开销而付出代价.本条建议将从两个方面来探讨如何规避这类性能开销: 确保尽量少的装箱 避免分配额外的内存空间 先来介绍第一个方面,请看下面的两行代码: String str1 = "str1"+ 9; String str2 = "

C#中如何正确的操作字符串?

字符串应该是所有编程语言中使用最频繁的一种基础数据类型.如果使用不慎,我们就会为一次字符串的操作所带来的额外性能开销而付出代价.本条建议将从两个方面来探讨如何规避这类性能开销: 1. 确保尽量少的装箱 2. 避免分配额外的内存空间. 第一个方面:确保尽量少的装箱 对于装拆箱,我们应该不陌生,值类型转换成引用类型即为装箱, 引用类型转换成值类型即为拆箱. 在自己编写的代码中,应当尽可能的避免编写不必要的装箱代码.装箱之所以会带来性能损耗,因为它需要完成下面三个步骤: • 首先,会为值类型在托管堆中

转载--编写高质量代码:改善Java程序的151个建议(第4章:字符串___建议52~55)

阅读目录 建议52:推荐使用String直接量赋值 建议53:注意方法中传递的参数要求 建议54:正确使用String.StringBuffer.StringBuilder 建议55:注意字符串的位置 回到顶部 建议52:推荐使用String直接量赋值 一般对象都是通过new关键字生成的,但是String还有第二种生成方式,也就是我们经常使用的直接声明方式,这种方式是极力推荐的,但不建议使用new String("A")的方式赋值.为什么呢?我们看如下代码: public class

编写高质量代码:改善Java程序的151个建议(第4章:字符串___建议52~55)

建议52:推荐使用String直接量赋值 一般对象都是通过new关键字生成的,但是String还有第二种生成方式,也就是我们经常使用的直接声明方式,这种方式是极力推荐的,但不建议使用new String("A")的方式赋值.为什么呢?我们看如下代码: public class Client58 { public static void main(String[] args) { String str1 = "詹姆斯"; String str2 = "詹姆斯

怎么做到对变频电源正确操作使用?

'怎么做到对变频电源正确操作使用?中港扬盛来分享内容如果变频电源,比如像中港扬盛稳压电源,在不使用的状态之下,要按停止键,这样机器就会返回到待机状态,但机器还未完全的断电,如果要全部断电,要记得切断电源线哦.CNZGYS,,,C0M使用变频电源时还有一个步骤就是要做好维护,如果有企业有专门的维护员,建议每周做好<运行检查记录>.机器在使用时还要注意一点,就是环境问题,不能把ZGYS变频电源放在潮湿,导电纤维.尘埃较多的环境哦. 原文地址:https://blog.51cto.com/14037

【转】Windows内核下操作字符串!

* Windows内核下操作字符串! */ #include <ntddk.h> #include <ntstrsafe.h> #define BUFFER_SIZE 1024 VOID DriverUnload(IN PDRIVER_OBJECT pDriverObject) { KdPrint(("DriverUnload Load...\n")); } //==================================================

LINQ:To Objects - 如何操作字符串

LINQ 如何操作字符串 前言: 上次发布的 <LINQ:进阶 - LINQ 标准查询操作概述>(90+赞) 社会反响不错,但自己却始终觉得缺点什么!“纸上得来终觉浅,绝知此事要躬行”,没错,就是实战!这次让我们一起来看看一些操作字符串的技巧,也许能引我们从不同的角度思考问题,从而走出思维的死角! LINQ 可用于查询和转换字符串和字符串集合.它对文本文件中的半结构化数据尤其有用.LINQ 查询可与传统的字符串函数和正则表达式结合使用. 例如,可以使用 Split 或 Split 方法来创建字

C# 操作字符串,在某些特定的字符后面或前面添加其它字符

C# 操作字符串,在某些特定的字符后面或前面添加其它字符,解决方法: 字符串替换或正则表达式替换即可. 示例:string s = @"第1种方案(约6站)在 泉城广场 坐 14路 到 按察司街北口/市立一院 换乘 11路/K109路 到 老东门第2种方案(约7站)在 泉城广场 坐 128路 到 朝山街北口/朝山街南口 换乘 36路 到 老东门第3种方案(约7站)在 泉城广场 坐 14路 到 大明湖东门 换乘 14路/30路/31路/36路/46路/83路/K98路 到 老东门第4种方案(约7站