Any performance difference between int.Parse() and Convert.Toint()?

前端 未结 6 1788
孤独总比滥情好
孤独总比滥情好 2020-12-15 04:27

Is there any significant advantages for converting a string to an integer value between int.Parse() and Convert.ToInt32() ?

string stringInt = \"01234\";

i         


        
6条回答
  •  轮回少年
    2020-12-15 04:58

    For what its worth:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                int iterations = 1000000;
                string val = "01234";
    
                Console.Write("Run 1: int.Parse() ");
                DateTime start = DateTime.Now;
                DoParse(iterations, val);
                TimeSpan duration = DateTime.Now - start;
                Console.WriteLine("Duration: " + duration.TotalMilliseconds.ToString() + "ms");
    
                Console.Write("Run 1: Convert.ToInt32() ");
                start = DateTime.Now;
                DoConvert(iterations, val);
                duration = DateTime.Now - start;
                Console.WriteLine("Duration: " + duration.TotalMilliseconds.ToString() + "ms");
    
                Console.Write("Run 2: int.Parse() ");
                start = DateTime.Now;
                DoParse(iterations, val);
                duration = DateTime.Now - start;
                Console.WriteLine("Duration: " + duration.TotalMilliseconds.ToString() + "ms");
    
                Console.Write("Run 2: Convert.ToInt32() ");
                start = DateTime.Now;
                DoConvert(iterations, val);
                duration = DateTime.Now - start;
                Console.WriteLine("Duration: " + duration.TotalMilliseconds.ToString() + "ms");
    
                Console.Write("Run 3: int.Parse() ");
                start = DateTime.Now;
                DoParse(iterations, val);
                duration = DateTime.Now - start;
                Console.WriteLine("Duration: " + duration.TotalMilliseconds.ToString() + "ms");
    
                Console.Write("Run 3: Convert.ToInt32() ");
                start = DateTime.Now;
                DoConvert(iterations, val);
                duration = DateTime.Now - start;
                Console.WriteLine("Duration: " + duration.TotalMilliseconds.ToString() + "ms");
    
                Console.ReadKey();
            }
    
            static void DoParse(int iterations, string val)
            {
                int x;
                for (int i = 0; i < iterations; i++)
                {
                    x = int.Parse(val);
                }
            }
    
            static void DoConvert(int iterations, string val)
            {
                int x;
                for (int i = 0; i < iterations; i++)
                {
                    x = Convert.ToInt32(val);
                }
            }
    
        }
    }
    

    Result of 1,000,000 iterations of each:

    Run 1: int.Parse() Duration: 312.5ms
    Run 1: Convert.ToInt32() Duration: 328.125ms
    Run 2: int.Parse() Duration: 296.875ms
    Run 2: Convert.ToInt32() Duration: 312.5ms
    Run 3: int.Parse() Duration: 312.5ms
    Run 3: Convert.ToInt32() Duration: 312.5ms
    

提交回复
热议问题