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类的功能。

  • 相关阅读:
    26 转义符 re模块 方法 random模块 collection模块的Counter方法
    25 正则表达式
    24 from 模块 import 名字
    24 from 模块 import 名字
    24 from 模块 import 名字
    23 析构方法 items系列 hash方法 eq方法
    21 isinstance issubclass 反射 _str_ _new_ _len_ _call_
    20 属性, 类方法, 静态方法. python2与python3的区别.
    python(1)
    python之字符串格式化
  • 原文地址:https://www.cnblogs.com/LiaoHao/p/3252499.html
Copyright © 2011-2022 走看看