C# 字符串比较 效率

自用草稿,勿参考

        private void btn_start_Click(object sender, EventArgs e)
        {
            Console.WriteLine("START");
            for (int i = 0; i < 10; i++)
            {
                testVoid();
                Console.WriteLine("");
            }
            Console.WriteLine("All Clear");
            Console.WriteLine("==: " + (float)r1 / 10);
            Console.WriteLine("str.Equals: " + (float)r2 / 10);
            Console.WriteLine("str.CompareTo: " + (float)r3 / 10);
            Console.WriteLine("string.Compare: " + (float)r4 / 10);
            Console.WriteLine("string.CompareOrdinal: " + (float)r5 / 10);
            Console.WriteLine("string.Equals: " + (float)r6 / 10);
        }

private static int r1 = 0, r2 = 0, r3 = 0, r4 = 0, r5 = 0, r6 = 0;

        private static void testVoid()
        {
            int start = Environment.TickCount;
            int total = 0;
            string orgString = FixedFunc.getRandText(49);
            List<string> strList = new List<string>();

            for (int i = 0; i < 1000000; i++)
            {
                strList.Add(FixedFunc.getRandText(49));
            }
            start = Environment.TickCount;
            foreach (string str in strList)
            {
                if (str == orgString)
                    Console.WriteLine("This is 1");
            }
            total = (Environment.TickCount - start);
            r1 += total;
            Console.WriteLine("== OVER: " + total);

            strList.Clear();
            for (int i = 0; i < 1000000; i++)
            {
                strList.Add(FixedFunc.getRandText(49));
            }
            start = Environment.TickCount;
            foreach (string str in strList)
            {
                if (str.Equals(orgString) == true)
                    Console.WriteLine("This is 2");
            }
            total = (Environment.TickCount - start);
            r2 += total;
            Console.WriteLine("str.Equals OVER: " + total);

            strList.Clear();
            for (int i = 0; i < 1000000; i++)
            {
                strList.Add(FixedFunc.getRandText(49));
            }
            start = Environment.TickCount;
            foreach (string str in strList)
            {
                if (str.CompareTo(orgString) == 0)
                    Console.WriteLine("This is 3");
            }
            total = (Environment.TickCount - start);
            r3 += total;
            Console.WriteLine("str.CompareTo OVER: " + total);

            strList.Clear();
            for (int i = 0; i < 1000000; i++)
            {
                strList.Add(FixedFunc.getRandText(49));
            }
            start = Environment.TickCount;
            foreach (string str in strList)
            {
                if (string.Compare(str, orgString) == 0)
                    Console.WriteLine("This is 4");
            }
            total = (Environment.TickCount - start);
            r4 += total;
            Console.WriteLine("string.Compare OVER: " + total);

            strList.Clear();
            for (int i = 0; i < 1000000; i++)
            {
                strList.Add(FixedFunc.getRandText(49));
            }
            start = Environment.TickCount;
            foreach (string str in strList)
            {
                if (string.CompareOrdinal(str, orgString) == 0)
                    Console.WriteLine("This is 5");
            }
            total = (Environment.TickCount - start);
            r5 += total;
            Console.WriteLine("string.CompareOrdinal OVER: " + total);

            strList.Clear();
            for (int i = 0; i < 1000000; i++)
            {
                strList.Add(FixedFunc.getRandText(49));
            }
            start = Environment.TickCount;
            foreach (string str in strList)
            {
                if (string.Equals(str, orgString) == true)
                    Console.WriteLine("This is 6");
            }
            total = (Environment.TickCount - start);
            r6 += total;
            Console.WriteLine("string.Equals OVER: " + total);
        }

结果:

START
== OVER: 47
str.Equals OVER: 47
str.CompareTo OVER: 375
string.Compare OVER: 375
string.CompareOrdinal OVER: 47
string.Equals OVER: 31

== OVER: 31
str.Equals OVER: 31
str.CompareTo OVER: 375
string.Compare OVER: 359
string.CompareOrdinal OVER: 31
string.Equals OVER: 47

== OVER: 32
str.Equals OVER: 47
str.CompareTo OVER: 406
string.Compare OVER: 375
string.CompareOrdinal OVER: 31
string.Equals OVER: 47

== OVER: 47
str.Equals OVER: 47
str.CompareTo OVER: 375
string.Compare OVER: 375
string.CompareOrdinal OVER: 31
string.Equals OVER: 47

== OVER: 47
str.Equals OVER: 47
str.CompareTo OVER: 375
string.Compare OVER: 375
string.CompareOrdinal OVER: 47
string.Equals OVER: 31

== OVER: 47
str.Equals OVER: 47
str.CompareTo OVER: 375
string.Compare OVER: 391
string.CompareOrdinal OVER: 31
string.Equals OVER: 47

== OVER: 47
str.Equals OVER: 47
str.CompareTo OVER: 391
string.Compare OVER: 375
string.CompareOrdinal OVER: 47
string.Equals OVER: 31

== OVER: 47
str.Equals OVER: 47
str.CompareTo OVER: 406
string.Compare OVER: 375
string.CompareOrdinal OVER: 47
string.Equals OVER: 47

== OVER: 47
str.Equals OVER: 47
str.CompareTo OVER: 375
string.Compare OVER: 375
string.CompareOrdinal OVER: 47
string.Equals OVER: 31

== OVER: 47
str.Equals OVER: 31
str.CompareTo OVER: 375
string.Compare OVER: 375
string.CompareOrdinal OVER: 31
string.Equals OVER: 31

All Clear
==: 43.9
str.Equals: 43.8
str.CompareTo: 382.8
string.Compare: 375
string.CompareOrdinal: 39
string.Equals: 39



结论:

在我的电脑上

比较是否相等最好用 string.equals

比较大小最好用 string.CompareOrdinal

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值