मैंने यह देखने के लिए कि क्या सबसे तेज़ तरीका है और ये मेरे परिणाम और निष्कर्ष हैं, कुछ बेंचमार्क किए। मैंने प्रत्येक विधि को 10M बार चलाया और प्रति रन औसत समय के साथ एक टिप्पणी जोड़ी।
यदि आपका इनपुट मिलीसेकंड एक दिन तक सीमित नहीं है (आपका परिणाम 143: 59: 59.999 हो सकता है), तो ये विकल्प हैं, तेजी से धीमे से:
// 0.86 ms
static string Method1(int millisecs)
{
int hours = millisecs / 3600000;
int mins = (millisecs % 3600000) / 60000;
// Make sure you use the appropriate decimal separator
return string.Format("{0:D2}:{1:D2}:{2:D2}.{3:D3}", hours, mins, millisecs % 60000 / 1000, millisecs % 1000);
}
// 0.89 ms
static string Method2(int millisecs)
{
double s = millisecs % 60000 / 1000.0;
millisecs /= 60000;
int mins = millisecs % 60;
int hours = millisecs / 60;
return string.Format("{0:D2}:{1:D2}:{2:00.000}", hours, mins, s);
}
// 0.95 ms
static string Method3(int millisecs)
{
TimeSpan t = TimeSpan.FromMilliseconds(millisecs);
// Make sure you use the appropriate decimal separator
return string.Format("{0:D2}:{1:D2}:{2:D2}.{3:D3}",
(int)t.TotalHours,
t.Minutes,
t.Seconds,
t.Milliseconds);
}
यदि आपका इनपुट मिलीसेकंड एक दिन तक सीमित है (आपका परिणाम कभी अधिक नहीं होगा तो 23: 59: 59.999), ये विकल्प हैं, तेजी से धीमे से:
// 0.58 ms
static string Method5(int millisecs)
{
// Fastest way to create a DateTime at midnight
// Make sure you use the appropriate decimal separator
return DateTime.FromBinary(599266080000000000).AddMilliseconds(millisecs).ToString("HH:mm:ss.fff");
}
// 0.59 ms
static string Method4(int millisecs)
{
// Make sure you use the appropriate decimal separator
return TimeSpan.FromMilliseconds(millisecs).ToString(@"hh\:mm\:ss\.fff");
}
// 0.93 ms
static string Method6(int millisecs)
{
TimeSpan t = TimeSpan.FromMilliseconds(millisecs);
// Make sure you use the appropriate decimal separator
return string.Format("{0:D2}:{1:D2}:{2:D2}.{3:D3}",
t.Hours,
t.Minutes,
t.Seconds,
t.Milliseconds);
}
यदि आपका इनपुट कुछ सेकंड का है , तो तरीके थोड़े तेज़ होते हैं। फिर, यदि आपके इनपुट सेकंड एक दिन तक सीमित नहीं हैं (आपका परिणाम 143: 59: 59 हो सकता है):
// 0.63 ms
static string Method1(int secs)
{
int hours = secs / 3600;
int mins = (secs % 3600) / 60;
secs = secs % 60;
return string.Format("{0:D2}:{1:D2}:{2:D2}", hours, mins, secs);
}
// 0.64 ms
static string Method2(int secs)
{
int s = secs % 60;
secs /= 60;
int mins = secs % 60;
int hours = secs / 60;
return string.Format("{0:D2}:{1:D2}:{2:D2}", hours, mins, s);
}
// 0.70 ms
static string Method3(int secs)
{
TimeSpan t = TimeSpan.FromSeconds(secs);
return string.Format("{0:D2}:{1:D2}:{2:D2}",
(int)t.TotalHours,
t.Minutes,
t.Seconds);
}
और यदि आपके इनपुट सेकंड एक दिन तक सीमित हैं (आपका परिणाम कभी भी अधिक नहीं होगा तो 23:59:59):
// 0.33 ms
static string Method5(int secs)
{
// Fastest way to create a DateTime at midnight
return DateTime.FromBinary(599266080000000000).AddSeconds(secs).ToString("HH:mm:ss");
}
// 0.34 ms
static string Method4(int secs)
{
return TimeSpan.FromSeconds(secs).ToString(@"hh\:mm\:ss");
}
// 0.70 ms
static string Method6(int secs)
{
TimeSpan t = TimeSpan.FromSeconds(secs);
return string.Format("{0:D2}:{1:D2}:{2:D2}",
t.Hours,
t.Minutes,
t.Seconds);
}
अंतिम टिप्पणी के रूप में, मुझे यह जोड़ना चाहिए कि मैंने देखा कि string.Format
अगर आप D2
इसके बजाय उपयोग करते हैं तो यह थोड़ा तेज है 00
।
using System;
कक्षा में रहता हैSystem.TimeSpan
।