关于字符串为空的几个性能测试

发表于:2018-6-19 17:17

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:一方乐土    来源:博客园

  今天突然有兴做了两下有关字符串为空的性能测试,与大家分享!结果如下:
  两种赋值方式的比较:
  string str="";
  string str=string.Empty;
  理论上讲:
  string.Empty是一个Static的属性,使用时不分配存储空间,而在用""时,系统会分配一个长度为空的存储空间。不过编译系统应该会优化,也就是说,比如你程序中有10个地方用到了"",但好的编译系统应该引用的是同一个对象。所以用""也就是浪费一个对象空间而已。
  实战:
  测试程序如下:
  namespace testEmpty
  {
  class Program
  {
  static void Main(string[] args)
  {
  Test test = new Test();
  test.testEmpty();
  test.testEqualEmpty();
  Console.Read();
  }
  }
  class Test
  {
  public void testEmpty()
  {
  string str;
  for (int i = 0; i < 10000; i++)
  {
  str = "";
  }
  }
  public void testEqualEmpty()
  {
  string str;
  for (int i = 0; i < 10000; i++)
  {
  str = string.Empty;
  }
  }
  }
  }
  测试过程是分别将赋值语句str=""和str=string.Empty用两个函数执行10000次,所用时间如下所示:
   
  所以说:单独执行testEmpty()执行10000次用了0.262669毫秒,单独执行testEqualEmpty()执行0.026849毫秒。前者是后者的10倍.
  下面介绍的是几种判断语句的比较:
  我想到的所有的判断空字符串的语句就这几种了,大家还有其它方法的欢迎讨论!
  str == ""
  str.Equals("")
  str==string.Empty
  str.Equals(string.Empty)
  str .Length==0

上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
21/212>
《2023软件测试行业现状调查报告》独家发布~

精彩评论

  • bling123
    2018-6-21 16:15:36

    嗯、收藏了

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号