{"id":52,"date":"2008-10-06T17:40:40","date_gmt":"2008-10-06T17:40:40","guid":{"rendered":"http:\/\/kumouse.aafox.com\/?p=52"},"modified":"2008-10-06T17:40:40","modified_gmt":"2008-10-06T17:40:40","slug":"queryperformancecounter-%e5%be%ae%e7%a7%92%e8%ae%a1%e6%95%b0%e5%99%a8","status":"publish","type":"post","link":"https:\/\/www.kumouse.com\/?p=52","title":{"rendered":"QueryPerformanceCounter \u5fae\u79d2\u8ba1\u6570\u5668"},"content":{"rendered":"<p>QueryPerformanceCounter \u53ef\u4ee5\u53d6\u5f97\u5f00\u673a\u4ee5\u6765\uff16\uff14\u4f4d\u7684\u65f6\u95f4\u8ba1\u6570\u503c<br \/>QueryPerformanceFrequency \u53d6\u5f97\u8ba1\u7b97\u673a\u6bcf\u79d2\u949f\u7684\u8ba1\u6570\u503c\uff0c\u548c\uff23\uff30\uff35\u901f\u5ea6\u6709\u5173<\/p>\n<p>Timer.asm:<\/p>\n<blockquote><p>;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br \/>&nbsp;&nbsp;&nbsp;&nbsp;.386<br \/>&nbsp;&nbsp;&nbsp;&nbsp;.model flat,stdcall<br \/>&nbsp;&nbsp;&nbsp;&nbsp;option casemap:none<br \/>; Include \u6587\u4ef6\u5b9a\u4e49<br \/>include&nbsp;&nbsp;&nbsp;&nbsp;windows.inc<br \/>include&nbsp;&nbsp;&nbsp;&nbsp;user32.inc<br \/>includelib&nbsp;&nbsp;user32.lib<br \/>include&nbsp;&nbsp;&nbsp;&nbsp;kernel32.inc<br \/>includelib&nbsp;&nbsp;kernel32.lib<br \/>;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br \/>ID_TIMER1&nbsp;&nbsp;equ&nbsp;&nbsp;1<br \/>DLG_MAIN&nbsp;&nbsp;equ&nbsp;&nbsp;1<br \/>IDC_COUNT&nbsp;&nbsp;equ&nbsp;&nbsp;101<br \/>;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br \/>; \u6570\u636e\u6bb5<br \/>;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br \/>.data<br \/>dw1m&nbsp;&nbsp;&nbsp;&nbsp;dd 1000000<br \/>ddcc1&nbsp;&nbsp;db  &quot;%d \u5fae\u79d2&quot;, 0<br \/>buffer   db  512   dup(?) <\/p>\n<p>num1    dq      333<br \/>num2    dq      3<br \/>res    dd      0<\/p>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;.data?<br \/>hInstance&nbsp;&nbsp;dd&nbsp;&nbsp;&nbsp;&nbsp;?<br \/>tick1&nbsp;&nbsp;&nbsp;&nbsp;dd&nbsp;&nbsp;&nbsp;&nbsp;?<br \/>dqtick1&nbsp;&nbsp;dq&nbsp;&nbsp;?<br \/>dqtick2&nbsp;&nbsp;dq&nbsp;&nbsp;?<br \/>dqFreq&nbsp;&nbsp;dq&nbsp;&nbsp;?<br \/>dqTime&nbsp;&nbsp;dq&nbsp;&nbsp;?<br \/>buf    db 200 dup(?)<br \/>;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br \/>; \u4ee3\u7801\u6bb5<br \/>;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br \/>&nbsp;&nbsp;&nbsp;&nbsp;.code<br \/>;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br \/>; \u8ba1\u7b97\u8fc7\u7a0b<br \/>;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<\/p>\n<p>_ProcDlgMain&nbsp;&nbsp;proc&nbsp;&nbsp;uses ebx edi esi,hWnd,uMsg,wParam,lParam<br \/>&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;eax,uMsg<br \/>&nbsp;&nbsp;&nbsp;&nbsp;.if&nbsp;&nbsp;eax ==&nbsp;&nbsp;WM_TIMER<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;eax,wParam<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.if&nbsp;&nbsp;eax == ID_TIMER1<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;invoke&nbsp;&nbsp;MessageBeep,-1<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.endif<br \/>&nbsp;&nbsp;&nbsp;&nbsp;.elseif&nbsp;&nbsp;eax ==&nbsp;&nbsp;WM_INITDIALOG<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;invoke QueryPerformanceCounter,addr dqtick1<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.while 1<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;add edi,1<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.break .if edi &gt; 100000000<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;.continue<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.endw<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;invoke QueryPerformanceCounter,addr dqtick2<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;invoke QueryPerformanceFrequency,addr dqFreq<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov eax,DWORD ptr dqtick1<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov edx,DWORD ptr dqtick1+4<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sub DWORD ptr dqtick2,eax<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sbb DWORD ptr dqtick2+4,edx<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;finit<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fild dqFreq<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fild dqtick2<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fimul dw1m<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fdivr<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fistp dqTime<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;invoke wsprintf,addr buf,addr ddcc1,dqTime<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;invoke SendDlgItemMessage,hWnd,IDC_COUNT,WM_SETTEXT,NULL,addr buf<br \/>&nbsp;&nbsp;&nbsp;&nbsp;.elseif eax ==&nbsp;&nbsp;WM_COMMAND<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;eax,wParam<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.if ax == IDOK<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;invoke QueryPerformanceCounter,addr dqtick1<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.while 1<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;add edi,1<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.break .if edi &gt; 100000000<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;.continue<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.endw<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;invoke QueryPerformanceCounter,addr dqtick2<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;invoke QueryPerformanceFrequency,addr dqFreq<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov eax,DWORD ptr dqtick1<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov edx,DWORD ptr dqtick1+4<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sub DWORD ptr dqtick2,eax<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sbb DWORD ptr dqtick2+4,edx<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;finit<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fild dqFreq<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fild dqtick2<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fimul dw1m<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fdivr<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fistp dqTime<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;invoke wsprintf,addr buf,addr ddcc1,dqTime<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;invoke SendDlgItemMessage,hWnd,IDC_COUNT,WM_SETTEXT,NULL,addr buf<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.endif<br \/>&nbsp;&nbsp;&nbsp;&nbsp;.elseif&nbsp;&nbsp;eax ==&nbsp;&nbsp;WM_CLOSE<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;invoke&nbsp;&nbsp;EndDialog,hWnd,NULL<br \/>&nbsp;&nbsp;&nbsp;&nbsp;.else<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;eax,FALSE<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ret<br \/>&nbsp;&nbsp;&nbsp;&nbsp;.endif<br \/>&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;eax,TRUE<br \/>&nbsp;&nbsp;&nbsp;&nbsp;ret<\/p>\n<p>_ProcDlgMain&nbsp;&nbsp;endp<\/p>\n<p>start:<br \/>&nbsp;&nbsp;&nbsp;&nbsp;invoke&nbsp;&nbsp;GetModuleHandle,NULL<br \/>&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;hInstance,eax<br \/>&nbsp;&nbsp;&nbsp;&nbsp;invoke&nbsp;&nbsp;DialogBoxParam,hInstance,DLG_MAIN,NULL,offset _ProcDlgMain,NULL<br \/>&nbsp;&nbsp;&nbsp;&nbsp;invoke&nbsp;&nbsp;ExitProcess,NULL<br \/>&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;&nbsp;start<\/p><\/blockquote>\n<p>Timer.rc:<\/p>\n<blockquote><p>\/\/&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#038;<\/p>\n<p>gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br \/>#include    &lt;resource.h&gt;<br \/>\/\/&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br \/>#define  DLG_MAIN    1<br \/>#define  ICO_1      1<br \/>#define  IDC_COUNT    101<br \/>\/\/&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br \/>ICO_1  ICON    &quot;1.ico&quot;<br \/>\/\/&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br \/>DLG_MAIN DIALOG 70, 110, 120, 70<br \/>STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU<br \/>CAPTION &quot;1+1 1\u4ebf\u6b21 \u5c0f\u6770\u7684\u535a\u5ba2&quot;<br \/>FONT 9, &quot;\u5b8b\u4f53&quot;<br \/>{<br \/> LTEXT &quot;\u8ba1\u6570\uff1a&quot;, -1, 35, 16, 25, 10<br \/> LTEXT &quot;&quot;, IDC_COUNT, 62, 16, 60, 10<br \/> DEFPUSHBUTTON &quot;\u5f00\u59cb&quot;, IDOK, 35, 36, 50, 20<br \/>}<\/p><\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>QueryPerformanceCounter \u53ef\u4ee5\u53d6\u5f97\u5f00\u673a\u4ee5\u6765\uff16\uff14\u4f4d\u7684\u65f6\u95f4\u8ba1\u6570\u503cQueryPerforman [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12],"tags":[],"class_list":["post-52","post","type-post","status-publish","format-standard","hentry","category-12"],"_links":{"self":[{"href":"https:\/\/www.kumouse.com\/index.php?rest_route=\/wp\/v2\/posts\/52","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.kumouse.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.kumouse.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.kumouse.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.kumouse.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=52"}],"version-history":[{"count":0,"href":"https:\/\/www.kumouse.com\/index.php?rest_route=\/wp\/v2\/posts\/52\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.kumouse.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=52"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.kumouse.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=52"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.kumouse.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=52"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}