从字符串中查找字符出现次数的方法和性能再比
2005-03-28 10:52
555 查看
原文是Ninputer所发,名叫“从字符串中查找字符出现次数的方法和性能对比”。
他在里面用了三种办法来查找'A'在"SADTHDGSAFSDGTGHRDGSADFADDRHDFSGASDAA"中的出现次数,可是我的测试结果的差别完全没有他的那么明显,三种方法最多也就相差2.5-2.7倍。也就是说遍历法和分割法只有不到3倍的效率差别,下面是上面那个字符串被三种方法测试1M遍的结果:
1、遍历统计长度: 613ms
2、替换后比较长度: 1,064ms
3、断开字符串后计数: 1,611ms
讨论后大家觉得一般情况下使用第二种方法是最经济的,因为少的代码会使程序的正确性得到提高,且在效率的损失也是可以接受的情况下。
这里可以对第二个方法有个优化,把:
c1 = str.Length - str.Replace("A", "").Length;
改成:
StringBuilder strb = new StringBuilder(str);
c1 = str.Length - strb.Replace("A", "").Length;
这次运行1M次的测试结果是:1,395ms,基本就是遍历法的两倍,而且我们还可以发现,这个方法的时间有1/3都是消耗在第一句建立StringBuilder上面,在这个的测试中它花费了578ms。
结下来是讨论了一下把str的采样空间变大,我把str复制了20份,长度达到了740个字节,这下测试1M次的结果如下:
1、遍历统计长度: 11,583ms
2、替换后比较长度: 17,454ms
3、断开字符串后计数: 26,953ms
4、改进后的替换法比较: 18,625ms(其中12,518的时间消耗在StringBuilder的建立上)。
可以看出StringBuilder里的native方法是效率极高的,再刨去其创建时的消耗后甚至高过了遍历法
,可是StringBuilder的创建也是很费时间的,真是难以取舍呀。
测试环境:P4 2.4 512M WinXp .NET Framework 1.1.
附测试代码:
他在里面用了三种办法来查找'A'在"SADTHDGSAFSDGTGHRDGSADFADDRHDFSGASDAA"中的出现次数,可是我的测试结果的差别完全没有他的那么明显,三种方法最多也就相差2.5-2.7倍。也就是说遍历法和分割法只有不到3倍的效率差别,下面是上面那个字符串被三种方法测试1M遍的结果:
1、遍历统计长度: 613ms
2、替换后比较长度: 1,064ms
3、断开字符串后计数: 1,611ms
讨论后大家觉得一般情况下使用第二种方法是最经济的,因为少的代码会使程序的正确性得到提高,且在效率的损失也是可以接受的情况下。
这里可以对第二个方法有个优化,把:
c1 = str.Length - str.Replace("A", "").Length;
改成:
StringBuilder strb = new StringBuilder(str);
c1 = str.Length - strb.Replace("A", "").Length;
这次运行1M次的测试结果是:1,395ms,基本就是遍历法的两倍,而且我们还可以发现,这个方法的时间有1/3都是消耗在第一句建立StringBuilder上面,在这个的测试中它花费了578ms。
结下来是讨论了一下把str的采样空间变大,我把str复制了20份,长度达到了740个字节,这下测试1M次的结果如下:
1、遍历统计长度: 11,583ms
2、替换后比较长度: 17,454ms
3、断开字符串后计数: 26,953ms
4、改进后的替换法比较: 18,625ms(其中12,518的时间消耗在StringBuilder的建立上)。
可以看出StringBuilder里的native方法是效率极高的,再刨去其创建时的消耗后甚至高过了遍历法
,可是StringBuilder的创建也是很费时间的,真是难以取舍呀。
测试环境:P4 2.4 512M WinXp .NET Framework 1.1.
附测试代码:
相关文章推荐
- 从字符串中查找字符出现次数的方法和性能对比
- 从字符串中查找字符出现次数的方法和性能对比
- 从字符串中查找字符出现次数的方法和性能再比
- 从字符串中查找字符出现次数的方法和性能对比
- 从字符串中查找字符出现次数的方法和性能对比
- 从字符串中查找字符出现次数的方法和性能对比
- 从字符串中查找字符出现次数的方法和性能对比
- ASP.NET从字符串中查找字符出现次数的方法
- 利用Mysql提供的字符串方法查找字符串中某字符出现的次数
- 查找字符串中某字符出现次数的方法
- ASP.NET从字符串中查找字符出现次数的具体实现方法
- 查找字符串中指定字符出现的次数:性能比较
- ASP.NET从字符串中查找字符出现次数的具体实现方法
- Javascript 查找字符串中出现最多的字符和出现的次数
- 查找一个字符串里,出现次数最多的字符,时间复杂度O(n)
- javascript查找字符串中出现最多的字符和次数的小例子
- 查找一个字符串中出现次处最多的那个字符,并输出出现次数
- 用递归实现查找字符串中相同字符连续出现次数的最大值
- 查找出字符串中出现最多的字符及其出现的次数
- 查找出字符串中出现最多的字符及其出现的次数