fork download
  1. using System;
  2. using System.Text;
  3. using System.Diagnostics;
  4. using System.Collections.Generic;
  5.  
  6. class TestClass
  7. {
  8. public List<string> Base { get; set; }
  9. public TestClass()
  10. {
  11. this.Base = new List<string>();
  12. GenFakeBase();
  13. }
  14.  
  15. public TimeSpan FormatStringTest()
  16. {
  17. Stopwatch sw = new Stopwatch();
  18. sw.Start();
  19. foreach (var z in this.Base) {
  20. var dt = String.Format("20{0}.{1}.{2}",
  21. z.Substring(0, 2),
  22. z.Substring(2, 2),
  23. z.Substring(4, 2));
  24. }
  25. sw.Stop();
  26. return sw.Elapsed;
  27. }
  28.  
  29.  
  30. public TimeSpan StringBuilderFormatTest()
  31. {
  32. Stopwatch sw = new Stopwatch();
  33. sw.Start();
  34. foreach (var z in this.Base)
  35. {
  36. StringBuilder sb = new StringBuilder();
  37. var dt = sb.AppendFormat("20{0}.{1}.{2}",
  38. z.Substring(0, 2),
  39. z.Substring(2, 2),
  40. z.Substring(4, 2)).ToString();
  41.  
  42. }
  43. sw.Stop();
  44. return sw.Elapsed;
  45. }
  46.  
  47. private void GenFakeBase()
  48. {
  49. Random r = new Random();
  50.  
  51. for (int i = 0; i < 40000; i++)
  52. {
  53. this.Base.Add(String.Format("{0:yyMMdd}",
  54. new DateTime(r.Next(2000, 2099), r.Next(1, 12), r.Next(1, 25))));
  55. }
  56.  
  57. }
  58.  
  59. public static void Main()
  60. {
  61. for(int i=0;i<20;++i)
  62. {
  63. TestClass t=new TestClass();
  64. if((i&1)!=0) Console.WriteLine(String.Format("FormatStringTest: {0}",t.FormatStringTest()));
  65. else Console.WriteLine(String.Format("StringBuilderFormatTest: {0}",t.StringBuilderFormatTest()));
  66. }
  67. }
  68. }
  69.  
Success #stdin #stdout 4.82s 43640KB
stdin
Standard input is empty
stdout
StringBuilderFormatTest: 00:00:00.0513856
FormatStringTest: 00:00:00.0442365
StringBuilderFormatTest: 00:00:00.0522395
FormatStringTest: 00:00:00.0472296
StringBuilderFormatTest: 00:00:00.0520350
FormatStringTest: 00:00:00.0475801
StringBuilderFormatTest: 00:00:00.0503980
FormatStringTest: 00:00:00.0487558
StringBuilderFormatTest: 00:00:00.0497289
FormatStringTest: 00:00:00.0458031
StringBuilderFormatTest: 00:00:00.0504880
FormatStringTest: 00:00:00.0459127
StringBuilderFormatTest: 00:00:00.0485575
FormatStringTest: 00:00:00.0461852
StringBuilderFormatTest: 00:00:00.0482333
FormatStringTest: 00:00:00.0460719
StringBuilderFormatTest: 00:00:00.0477882
FormatStringTest: 00:00:00.0455385
StringBuilderFormatTest: 00:00:00.0507450
FormatStringTest: 00:00:00.0457698