zoukankan      html  css  js  c++  java
  • string的连接字符串方法及效率

    1. 直接使用string类进行连接,最后用Substring(1)去掉开头的分隔符,运行时间为 00:00:44.7643680
    2. 为StringBuilder指定刚好足够大的内存,用Append连接,最后用ToString(1, sb.Length - 1)去掉开头的分隔符,运行时间为 00:00:20.6396784
    3. 无法预知StringBuilder需要的内存数,不指定初始内存,使用默认值16,这样会造成三次内存重分配,用Append连接,最后用ToString(1, sb.Length - 1)去掉开头的分隔符,运行时间为 00:00:26.8486064
    4. 为StringBuilder指定刚好足够大的内存,用Append连接,最后用Length = Length - 1去掉结尾的分隔符,运行时间为 00:00:17.6553872
    5. 无法预知StringBuilder需要的内存数,不指定初始内存,使用默认值16,这样会造成三次内存重分配,用Append连接,最后用Length = Length - 1去掉结尾的分隔符,运行时间为 00:00:23.4336960
    6. 使用String.Join,参数为string[],运行时间为 00:00:07.2604400
    7. 使用String.Join,参数为包含string的ArrayList,调用ArrayList.ToArray得到字符串数组,运行时间为 00:00:19.6782960
    8. 使用String.Join,创建指定长度的string[],并将ArrayList的每一个元素调用ToString后保存到数组中,运行时间为 00:00:09.7740544

      之后的代码仅测试字符串连接,不包含分隔符,结果如下:

    1. 为StringBuilder指定刚好足够大的内存,用Append连接,运行时间为 00:00:10.8856528
    2. 无法预知StringBuilder需要的内存数,不指定初始内存,使用默认值16,这样会造成三次内存重分配,用Append连接,运行时间为 00:00:18.0459488
    3. 使用String.Concat(string[]),参数为包含string的ArrayList,调用ArrayList.ToArray得到string[],运行时间为 00:00:20.1790160
    4. 使用String.Concat(string[]),参数为string[],运行时间为 00:00:07.5909152
    5. 使用String.Concat(object[]),参数为包含string的ArrayList,调用ArrayList.ToArray得到object[],运行时间为 00:00:12.2175680

      不同的情况下,需要使用不同的方法以达到最好的效率,但是,我们应该清楚一点,并不是所有的场合StringBuilder都可以来代替string的操作,如果对string的操作是可预知的类型,并且string类本身提供了相应的功能,则应当优先使用string类的功能。

  • 相关阅读:
    PAT 1006 Sign In and Sign Out
    PAT 1004. Counting Leaves
    JavaEE开发环境安装
    NoSql数据库探讨
    maven的配置
    VMWARE 下使用 32位 Ubuntu Linux ,不能给它分配超过3.5G 内存?
    XCODE 4.3 WITH NO GCC?
    在苹果虚拟机上跑 ROR —— Ruby on Rails On Vmware OSX 10.7.3
    推荐一首让人疯狂的好歌《Pumped Up Kicks》。好吧,顺便测下博客园可以写点无关技术的帖子吗?
    RUBY元编程学习之”编写你的第一种领域专属语言“
  • 原文地址:https://www.cnblogs.com/LiaoHao/p/3252499.html
Copyright © 2011-2022 走看看