jjzjj

GetSystemTimeAsFileTime

全部标签

c - 有效地为不同的 Windows 版本使用不同的 API

我面临着使用可用的新Windows运行时功能的需要,并回退到新功能不存在的旧功能。代码路径对性能至关重要。如果平台(Windows8/WindowsServer2012)提供,我需要调用GetSystemTimePreciseAsFileTime,如果不存在较新的版本,则回退到GetSystemTimeAsFileTime。我知道我可以使用LoadLibrary和GetProcAddress加载GetSystemTimePreciseAsFileTime如果失败,回退到GetSystemTimeAsFileTime。我担心通过另一层间接调用像这样对性能至关重要的东西对性能的影响。是否有

c# - 调用Windows API时CLR怎么比我快

当我发现(对我来说)令人惊讶的事情时,我测试了生成时间戳的不同方法。使用P/Invoke调用Windows的GetSystemTimeAsFileTime比调用DateTime.UtcNow慢大约3倍,后者在内部使用CLR的包装器来实现相同的GetSystemTimeAsFileTime.这怎么可能?这是DateTime.UtcNow'simplementation:publicstaticDateTimeUtcNow{get{longticks=0;ticks=GetSystemTimeAsFileTime();returnnewDateTime(((UInt64)(ticks+Fi