Guest User

Untitled

a guest
May 23rd, 2018
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.73 KB | None | 0 0
  1. logEntryTime.ToString("dd.MM.yy HH:mm:ss:fff")
  2.  
  3. public static string FormatDateTime(DateTime dt)
  4. {
  5. char[] chars = new char[21];
  6. Write2Chars(chars, 0, dt.Day);
  7. chars[2] = '.';
  8. Write2Chars(chars, 3, dt.Month);
  9. chars[5] = '.';
  10. Write2Chars(chars, 6, dt.Year % 100);
  11. chars[8] = ' ';
  12. Write2Chars(chars, 9, dt.Hour);
  13. chars[11] = ' ';
  14. Write2Chars(chars, 12, dt.Minute);
  15. chars[14] = ' ';
  16. Write2Chars(chars, 15, dt.Second);
  17. chars[17] = ' ';
  18. Write2Chars(chars, 18, dt.Millisecond / 10);
  19. chars[20] = Digit(dt.Millisecond % 10);
  20.  
  21. return new string(chars);
  22. }
  23.  
  24. private static Write2Chars(char[] chars, int value, int offset)
  25. {
  26. chars[offset] = Digit(value / 10);
  27. chars[offset+1] = Digit(value % 10);
  28. }
  29.  
  30. private static char Digit(int value)
  31. {
  32. return (char) (value + '0');
  33. }
  34.  
  35. Basic: 2342ms
  36. Custom: 1319ms
  37.  
  38. Basic: 2275ms
  39. Custom: 839ms
  40.  
  41. using System.Diagnostics;
  42. using System;
  43. using System.IO;
  44. static class Program
  45. {
  46. static void Main()
  47. {
  48. DateTime when = DateTime.Now;
  49. const int LOOP = 1000000;
  50.  
  51. Stopwatch basic = Stopwatch.StartNew();
  52. using (TextWriter tw = new StreamWriter("basic.txt"))
  53. {
  54. for (int i = 0; i < LOOP; i++)
  55. {
  56. tw.Write(when.ToString("dd.MM.yy HH:mm:ss:fff"));
  57. }
  58. }
  59. basic.Stop();
  60. Console.WriteLine("Basic: " + basic.ElapsedMilliseconds + "ms");
  61.  
  62. char[] buffer = new char[100];
  63. Stopwatch custom = Stopwatch.StartNew();
  64. using (TextWriter tw = new StreamWriter("custom.txt"))
  65. {
  66. for (int i = 0; i < LOOP; i++)
  67. {
  68. WriteDateTime(tw, when, buffer);
  69. }
  70. }
  71. custom.Stop();
  72. Console.WriteLine("Custom: " + custom.ElapsedMilliseconds + "ms");
  73. }
  74. static void WriteDateTime(TextWriter output, DateTime when, char[] buffer)
  75. {
  76. buffer[2] = buffer[5] = '.';
  77. buffer[8] = ' ';
  78. buffer[11] = buffer[14] = buffer[17] = ':';
  79. Write2(buffer, when.Day, 0);
  80. Write2(buffer, when.Month, 3);
  81. Write2(buffer, when.Year % 100, 6);
  82. Write2(buffer, when.Hour, 9);
  83. Write2(buffer, when.Minute, 12);
  84. Write2(buffer, when.Second, 15);
  85. Write3(buffer, when.Millisecond, 18);
  86. output.Write(buffer, 0, 21);
  87. }
  88. static void Write2(char[] buffer, int value, int offset)
  89. {
  90. buffer[offset++] = (char)('0' + (value / 10));
  91. buffer[offset] = (char)('0' + (value % 10));
  92. }
  93. static void Write3(char[] buffer, int value, int offset)
  94. {
  95. buffer[offset++] = (char)('0' + (value / 100));
  96. buffer[offset++] = (char)('0' + ((value / 10) % 10));
  97. buffer[offset] = (char)('0' + (value % 10));
  98. }
  99. }
Add Comment
Please, Sign In to add comment