在Linux上,似乎getpid()
是最简单的系统调用,用于调用以最佳地测量系统调用所花费的时间。有人能够引用我一个简单的Windows系统调用,我可以用它来衡量转换到内核模式所花费的时间吗?
我确实谷歌并在MSDN网站上找到了一个Windows系统调用列表,但他们都提到了打开文件 - 这看起来很奇怪:
http://msdn.microsoft.com/en-us/library/t0wd4t32.aspx
我在Windows 7 64位上。
答案 0 :(得分:1)
我的建议(这只是基于直觉)是尝试像
这样的东西CloseHandle(NULL)
或
WaitForMultipleObjectsEx(0, NULL, 0, 0, FALSE)
理由是它应该是无操作。但是,我没有任何证据支持这一点。
对Win8.1 x64进行一些基准测试显示(未记录的)NtDisplayString(NULL)
函数更快,其次是半文档NtAllocateLocallyUniqueId(&some_luid)
。您必须使用GetProcAddress
从NTDLL动态加载它们;签名是:
NTSTATUS NTAPI PNtAllocateLocallyUniqueId(PLUID LUID);
NTSTATUS NTAPI PNtDisplayString(PUNICODE_STRING DisplayString);