当前位置: 首页 > news >正文

共享充电宝开发网站东莞优化建设

共享充电宝开发,网站东莞优化建设,qq小程序,盐山网站建设前言 分享一些通过书籍和网络学到的知识 每次动态创建一个string#xff0c;C#都会在堆内存分配一个内存用来分配字符串#xff0c;因为C#没有对字符串的缓存机制#xff0c;会导致每次连接、切割、组合的时候都会申请新的内存#xff0c;并且抛弃原来的内存#xff0c;等…前言 分享一些通过书籍和网络学到的知识 每次动态创建一个stringC#都会在堆内存分配一个内存用来分配字符串因为C#没有对字符串的缓存机制会导致每次连接、切割、组合的时候都会申请新的内存并且抛弃原来的内存等待GC而GC又会消耗很多CPU空间例如对于a “ax”; c “b” a “c”会造成一定程度的性能浪费。因为这里的操作符是在运行时进行的而不是在编译时。所以每次操作都会创建一个新的字符串对象而不是改变原来的对象。这样就会产生两个无用的中间对象“bax和baxc”占用内存空间如果不注意的话就会导致程序卡顿逐步增加降低运行效率有几种办法提高字符串效率注意StringFormat和用拼接还有$语法糖都会有一定效率问题提高效率还是尽量用StringBuilder但是为了可读性字符串比较短而且低频没必要的话就语法糖就好。 id-字符串字典池 自己建一个Key-字符串的缓存池拼的时候从池子里面找减少GC Dictint,string Dictionaryint,string strCache; string strName null; if(!strCache.TryGetValue(id, out strName)) { ResData resData GetDataById(ID); string strName This is resData,Name; strCache.Add(idstrName); } return strName;做一个定长的字符串池用指针来拼接字符串 将指针指向目标字符串把strA和strB分别拼在前置位和后置位减少内存的分配和释放次数 public unsafe string Concat(string strA, string strB) { int a_length strA.Length; int b_length strB.Length; int sum_length a_length b_length; string strResult null; if (!cacheStr.TryGetValue(sum_length, out strResult)) // 如果不存在 sum_length 长度的缓存字符串那么直接连接后存入缓存 { strResult strA strB; cacheStr.Add(sum_length, strResult); return strResult; } //字符串再利用 fixed (char* strA_ptr strA) { fixed (char* strB_ptr strB) { fixed (char* strResult_ptr strResult) { memcopy((byte*)strResult_ptr, (byte*)strA_ptr, a_length * sizeof(char)); memcopy((byte*)strResult_ptra_length,(byte*)strB_ptr,b_length * sizeof(char)); } } } return strResult; }memcopy函数 public unsafe void memcopy(byte* dest, byte* src, int len) { while((--len)0) {dest[len] src[len];}}StringBuilder 同样可以解决多次创建字符串反复拼接时候的GC问题StringBuilder是可变的也就是说它可以在原有的字符串上进行修改而不需要创建新的字符串对象这样可以节省内存空间和提高效率。StringBuilder支持链式调用可以方便地进行多个字符串操作例如builder.Append(“a”).Append(“b”).Append(“c”)。StringBuilder可以动态地调整其容量当字符串长度超过当前容量时它会自动扩展容量而不会抛出异常。 缺点是tringBuilder是线程不安全的也就是说在多线程环境下如果多个线程同时对同一个StringBuilder对象进行修改可能会导致数据不一致或者错误。StringBuilder的ToString方法需要遍历其内部的字符数组将其拼接成一个新的字符串对象这个过程可能会消耗一定的时间和资源。StringBuilder只会在toString时创建一次字符串相比于之前的多次创建字符串给CPU性能压力减少很大。
http://www.dnsts.com.cn/news/58595.html

相关文章:

  • 调查队网站建设wordpress目录和页面
  • 下载软件的网址seo关键词挖掘工具
  • 国家商标查询官方网站长链接转短链接生成器
  • 做分销网站系统下载如何网站开发
  • 做网站的一个专题滨海县城乡建设局网站
  • 广西美丽乡村建设网站娱乐网站设计多少行业
  • 大学作业旅游网站设计报告阜阳交通建设工程质监局网站
  • dw怎样建设网站联谊会总结网站建设对外宣传
  • 网站安全建设总结苏晋建设集团网站
  • 适合个人做的网站有哪些东西supercell账号注册网站
  • 网站建设培训费用多少温州网站推广公司
  • 自己视频怎么上传网站wordpress 七牛云 ssl
  • 备案网站忘记密码重庆网站建设案例
  • 静海网站建设制作微信公众平台号申请注册
  • 个人网站页面模板html义乌企业网站建设
  • 手机网站qq登录插件广东网站开发项目
  • 做网站的叫什么新公司名称核准在哪个网站
  • 绍兴网站开发08keji苏州三石网络科技有限公司
  • 毕业设计做音乐网站可以吗怎么做学校子网站
  • php淘宝商城网站源码网站自己怎么做的
  • 网站的优化 优帮云织梦广告网站模板免费下载
  • 门户网站的好处wordpress设置注册观看
  • 网站开发工具环球建筑网校
  • 建立团购网站泰州手机网站制作
  • 辽宁省建设厅网站更新猫咪99永久找到回家的路
  • 南昌网站建设制作与维护攀枝花仁和住房和城乡建设局网站
  • 自己做的视频发什么网站吗平面设计专业哪个学校最好
  • 淄博网站建设费用甘肃网站建设选哪家
  • 做网站对电脑要求高吗建设档案员证书查询网站
  • 汶上做网站石家庄做网站的有哪些公司