IndexOf() LastIndexOf() Contains() StartsWith() EndsWith()方法比较
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Diagnostics; namespace CA100
{
class Program
{
//循环次数:5百万次
const int COUNT = 5000000;
//外围循环次数:5次
const int NUM = 5;
//准确测量运行时间
static Stopwatch sWatch = new Stopwatch();
//每项时间
static long t1, t2;
//记录日志
static StringBuilder sb = new StringBuilder(); static void Main()
{
string src = "C#测试IndexOf()LastIndexOf()Contains()StartsWith()EndsWith()5个方法的效率.";
Console.WriteLine("测试的字符串是:" + src + ",测试次数" + COUNT);
sb.AppendLine("测试的字符串是:" + src + ",测试次数" + COUNT);
string str = "C";
//每项循环测试5次
int i = 0;
Console.WriteLine("\n'C'出现在首位时:\n");
sb.AppendLine("\r\n'C'出现在首位时:\r\n");
for (; i < NUM; i++)
{
Console.WriteLine("当前循环第{0}次\n", i + 1);
sb.AppendLine("当前循环第" + (i + 1) + "次");
t1 += IndexOf(src, str);
t2 += StartsWith(src, str);
Console.WriteLine();
sb.AppendLine();
}
Console.WriteLine("IndexOf总时间:" + t1 + ",平均时间:" + t1 / NUM);
sb.AppendLine("IndexOf总时间:" + t1 + ",平均时间:" + t1 / NUM);
Console.WriteLine("StartsWith总时间:" + t2 + ",平均时间:" + t2 / NUM);
sb.AppendLine("StartsWith总时间:" + t2 + ",平均时间:" + t2 / NUM);
Console.WriteLine();
sb.AppendLine();
t1 = 0;
t2 = 0; str = "StartsWith";
Console.WriteLine("'StartsWith'出现在中间:\n");
sb.AppendLine("'StartsWith'出现在中间:\r\n");
for (i = 0; i < NUM; i++)
{
Console.WriteLine("当前循环第{0}次\n", i + 1);
sb.AppendLine("当前循环第" + (i + 1) + "次");
t1 += IndexOf(src, str);
t2 += Contains(src, str);
Console.WriteLine();
sb.AppendLine();
} Console.WriteLine("IndexOf总时间:" + t1 + ",平均时间:" + t1 / NUM);
sb.AppendLine("IndexOf总时间:" + t1 + ",平均时间:" + t1 / NUM);
Console.WriteLine("Contains总时间:" + t2 + ",平均时间:" + t2 / NUM);
sb.AppendLine("Contains总时间:" + t2 + ",平均时间:" + t2 / NUM);
Console.WriteLine();
sb.AppendLine();
t1 = 0;
t2 = 0; str = ".";
Console.WriteLine("'.'出现在末尾:\n");
sb.AppendLine("'.'出现在末尾:\r\n");
for (i = 0; i < NUM; i++)
{
Console.WriteLine("当前循环第{0}次\n", i + 1);
sb.AppendLine("当前循环第" + (i + 1) + "次");
t1 += LastIndexOf(src, str);
t2 += EndsWith(src, str);
Console.WriteLine();
sb.AppendLine();
} Console.WriteLine("LastIndexOf总时间:" + t1 + ",平均时间:" + t1 / NUM);
sb.AppendLine("LastIndexOf总时间:" + t1 + ",平均时间:" + t1 / NUM);
Console.WriteLine("EndsWith总时间:" + t2 + ",平均时间:" + t2 / NUM);
sb.AppendLine("EndsWith总时间:" + t2 + ",平均时间:" + t2 / NUM);
Console.WriteLine();
sb.AppendLine(); Console.WriteLine("测试结束!");
sb.AppendLine("测试结束!"); File.AppendAllText(@"d:\results.txt", sb.ToString());
Console.ReadLine();
} static long IndexOf(string src, string str)
{
sWatch.Reset();
sWatch.Start();
for (int i = 0; i < COUNT; i++)
{
src.IndexOf(str);
}
sWatch.Stop(); Console.WriteLine("IndexOf花费: " + sWatch.ElapsedMilliseconds + "ms");
sb.AppendLine("IndexOf花费: " + sWatch.ElapsedMilliseconds + "ms");
return sWatch.ElapsedMilliseconds;
} static long LastIndexOf(string src, string str)
{
sWatch.Reset();
sWatch.Start();
for (int i = 0; i < COUNT; i++)
{
src.LastIndexOf(str);
}
sWatch.Stop(); Console.WriteLine("LastIndexOf花费: " + sWatch.ElapsedMilliseconds + "ms");
sb.AppendLine("LastIndexOf花费: " + sWatch.ElapsedMilliseconds + "ms");
return sWatch.ElapsedMilliseconds;
} static long StartsWith(string src, string str)
{
sWatch.Reset();
sWatch.Start();
for (int i = 0; i < COUNT; i++)
{
src.StartsWith(str);
}
sWatch.Stop(); Console.WriteLine("StartsWith花费: " + sWatch.ElapsedMilliseconds + "ms");
sb.AppendLine("StartsWith花费: " + sWatch.ElapsedMilliseconds + "ms");
return sWatch.ElapsedMilliseconds;
} static long EndsWith(string src, string str)
{
sWatch.Reset();
sWatch.Start();
for (int i = 0; i < COUNT; i++)
{
src.EndsWith(str);
}
sWatch.Stop(); Console.WriteLine("EndsWith花费: " + sWatch.ElapsedMilliseconds + "ms");
sb.AppendLine("EndsWith花费: " + sWatch.ElapsedMilliseconds + "ms");
return sWatch.ElapsedMilliseconds;
} static long Contains(string src, string str)
{
sWatch.Reset();
sWatch.Start();
for (int i = 0; i < COUNT; i++)
{
src.Contains(str);
}
sWatch.Stop(); Console.WriteLine("Contains花费: " + sWatch.ElapsedMilliseconds + "ms");
sb.AppendLine("Contains花费: " + sWatch.ElapsedMilliseconds + "ms");
return sWatch.ElapsedMilliseconds;
}
}
}
针对三种情况
1.判断以字符串开头
IndexOf和StartsWith
2.判断是否包含字符串
IndexOf和Contains
3.判断以字符串结尾
LastIndexOf和EndsWith
测试以某字符串为开头,以使用IndexOf为最佳,有时,StartsWith也会比IndexOf快,几率较低。
测试包含字符串,以Contains最佳。
测试以某字符串结尾,虽然LastIndexOf速度略快,但是不好判定,还是采用EndsWith为最佳。
IndexOf() LastIndexOf() Contains() StartsWith() EndsWith()方法比较的更多相关文章
- indexOf()、lastIndexOf()、startsWith()等方法应用
- python 中startswith()和endswith() 方法
startswith()方法 Python startswith() 方法用于检查字符串是否是以指定子字符串开头如果是则返回 True,否则返回 False.如果参数 beg 和 end 指定值,则在 ...
- String中的Indexof,LastIndexOf, Indexofany,LastIndexOfAny 的区别
本文转载自 http://www.cnblogs.com/qinying/archive/2008/09/22/1295730.html 定位子串是指在一个字符串中寻找其中包含的子串或者某个字符.在S ...
- Python endswith() 方法
描述 endswith() 方法用于判断字符串是否以指定后缀结尾,如果是则返回 True,否则返回 False. 语法 endswith() 方法语法: S.endswith(suffix[,star ...
- 使用js的indexOf,lastIndexOf,slice三函数轻易得到url的服务器,路径和页名
js的indexOf,lastIndexOf,slice能帮我们在js字符串处理时少走一些弯路. 程序如下: var url="http://www.cnblogs.com/xiandeda ...
- 数组方法indexOf & lastIndexOf
indexOf() 语法:arrayObject.indexOf(searchvalue, startIndex) 功能:从数组的开头(位置0)开始向后查找. 参数:searchvalue:必需,要查 ...
- 字符串方法之-indexOf、lastIndexOf、等等一些方法
1.indexOf():方法可返回某个指定的字符串值在字符串中首次出现的位置(从左往右找). 语法:stringObject.indexOf(searchvalue,fromindex) <sc ...
- js数组定义、属性及方法(push/pop/unshfit/shfit/reverse/sort/slice/splice/indexOf/lastIndexOf)
数组 一.定义数组 * 字面量方式 var 数组名称 = [ value,value,... ] * 构造函数方式 var 数组名称 = new Array(value,value,...): v ...
- 45-python基础-python3-字符串-常用字符串方法(三)-startswith()-endswith()
4-字符串方法 startswith()和 endswith() startswith()和 endswith()判断字符串是否以某个字符串开始或结尾,存在返回 True,否则,方法返回 False. ...
随机推荐
- MASM6.15汇编程序例子
/***************通过调用(INT 21H)表中的01h号功能号从键盘输入一个字符并回显到视频显示器上*****************/ DATAS SEGMENT ;此处输入数据段代 ...
- 高度30px,宽度自适应,点线在文字中间
<style> .div{ position: relative; width: 100%; height: 30px; background: #ffff00} .div ...
- Zookeeper注册节点的掉线自动重新注册及测试方法
转载:http://www.codelast.com/ 在一套分布式的online services系统中,各service通常不会放在一台服务器上,而是通过Zookeeper这样的东西,将自己的se ...
- CSS 去除列表项li前面的小圆点
前言 在默认的情况下,浏览器会在<li>标签前面加上小圆点形成列表项,如下所示使用<ul> 项1 项2 项3 或者使用<ol> 项1 项2 项3 这在有时候确实给我 ...
- Python 2.7教程
参考:http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000
- TFS错误 TF31004:在连接带xxx.xxx.xxx.xxx上的Team Foundation Server时遇到错误。请等待几分钟,然后重试。如果问题仍然存在,请与服务器管理员联系
- 如何在 Linux 中整理磁盘碎片
有一个神话是 linux 的磁盘从来不需要整理碎片.在大多数情况下这是真的,大多数因为是使用的是优秀的日志文件系统(ext3.4等等)来处理文件系统.然而,在一些特殊情况下,碎片仍旧会产生.如果正巧发 ...
- MyEclipse 修改代码不生效
最近得了一个项目,java开发的web项目,修改代码时,无论怎么改,都不生效: 各种度娘,没用. 原因是没有建立发布设定 这个东西我开始不理解它的作用,现在知道了: mysqleclipse项目在一个 ...
- python错误集锦
1.lt与list等同,不能作为变量名 2.中文路径名:os.path.normcase(filepath) 如果遇到 ascii码在路径某处不能转换, 那么 filepath.encode('gbk ...
- POJ 2739 Sum of Consecutive Prime Numbers 难度:0
题目链接:http://poj.org/problem?id=2739 #include <cstdio> #include <cstring> using namespace ...