Предпочитаете скеливать строки с помощью string.Format?

by galyamov 25. апреля 2011 14:18
Тогда вот вам сравнительный анализ разных методов конкатинации строк:
        static void Main(string[] args)
        {
            Stopwatch sw = new Stopwatch();
            const int length = 1000000;
            string[] res = new string[length];

            // KISS
            sw.Restart();
            for (int i = 0; i < length; i++)
            {
                res[i] = "(" + i.ToString() + ")";
            }
            sw.Stop();
            Console.WriteLine(sw.ElapsedMilliseconds); // 642

            // Медленнее из-за боксинга. Не забываем про ToString().
            sw.Restart();
            for (int i = 0; i < length; i++)
            {
                res[i] = "(" + i + ")";
            }
            sw.Stop();
            Console.WriteLine(sw.ElapsedMilliseconds); // 687

            // Самый медленный вариант и не самый удобный.
            sw.Restart();
            for (int i = 0; i < length; i++)
            {
                res[i] = String.Format("({0})", i.ToString());
            }
            sw.Stop();
            Console.WriteLine(sw.ElapsedMilliseconds); // 878!

            // Не на много быстрее чем первый, но самый не удобный.
            // Имеет смысл использовать, если критична скорость или требуется сложная конкатинация.
            sw.Restart();
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < length; i++)
            {
                res[i] = sb.Clear()
                    .Append("(")
                    .Append(i.ToString())
                    .Append(")")
                    .ToString();
            }
            sw.Stop();
            Console.WriteLine(sw.ElapsedMilliseconds); // 631

            Console.ReadLine();
        }
Вывод: использовать "+" - это нормально.

Оценок нет

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

C#

Комментарии

Комментарии закрыты

О нас

Это блог компании Инлайн. Мы занимаемся разработкой сайтов, корпоративных порталов и корпоративных информационных систем на основе новейших технологии Microsoft  - ASP.NET, SharePoint и Silverlight. А в этом блоге мы размещаем самые последние новости в области разработке для web.

Облако тегов