當年在做go時,很羨慕它的時間有微秒,納秒,在做性能優化時,能很小顆粒度的查看引入方法執行的時間,當時.net的DateTime只有毫秒(雖然也有別的辦法獲取)。現在,在最新的.NET7 Preview4中,DateTime也有微秒和納秒了,倍感親切。
納秒在百位上,沒有十位和個位,但這也說明.NET在進化,向高性能進化,在乎微秒和百位納秒了(哈哈)。
下面是引入這兩個時間單位的實現:
namespace System {public struct DateTime {public DateTime(int year, int month, int day, int hour, int minute, int second, int millisecond, int microsecond);public DateTime(int year, int month, int day, int hour, int minute, int second, int millisecond, int microsecond, System.DateTimeKind kind);public DateTime(int year, int month, int day, int hour, int minute, int second, int millisecond, int microsecond, System.Globalization.Calendar calendar);public int Microsecond { get; }public int Nanosecond { get; }public DateTime AddMicroseconds(double value);}public struct DateTimeOffset {public DateTimeOffset(int year, int month, int day, int hour, int minute, int second, int millisecond, int microsecond, System.TimeSpan offset);public DateTimeOffset(int year, int month, int day, int hour, int minute, int second, int millisecond, int microsecond, System.TimeSpan offset, System.Globalization.Calendar calendar);public int Microsecond { get; }public int Nanosecond { get; }public DateTimeOffset AddMicroseconds(double microseconds);}public struct TimeSpan {public const long TicksPerMicrosecond = 10L;public const long NanosecondsPerTick = 100L;public TimeSpan(int days, int hours, int minutes, int seconds, int milliseconds, int microseconds);public int Microseconds { get; }public int Nanoseconds { get; }public double TotalMicroseconds { get; }public double TotalNanoseconds { get; }public static TimeSpan FromMicroseconds(double microseconds);}public struct TimeOnly {public TimeOnly(int day, int hour, int minute, int second, int millisecond, int microsecond);public int Microsecond { get; }public int Nanosecond { get; }}
}