[英]clock() function in C always returns 50 at least
我不是程序員,但是最近我對編碼感興趣,開始自己學習C,然后開始用它來解決ProjectEuler.net的問題。
我在正在編寫的每個源代碼的末尾添加了這兩行:
printf ( "The number you are looking for is %d", 0 );
printf ( "\n... and took %d / %d seconds to compute that", clock(), CLOCKS_PER_SEC );
...我將零替換為所需的數字作為答案。
事情是; 無論我如何優化工作,printf都不會顯示少於50個時鍾,即使當我使用完全空白的源代碼且除了這兩個操作之外沒有其他操作時,printf仍會顯示50個時鍾。 是花了這50個時鍾的最上面的#include還是其他東西?
我的一些已填寫的源代碼也顯示50個時鍾。 所以...我不知道在這里可以推斷出什么,我寫的某些東西真的需要0毫秒才能解決嗎?
您的系統每隔一段時間(可能是每50毫秒一次)“滴答”,而不是連續運行。 因此, clock()
函數可衡量自進程啟動以來已消耗的這些“滴答聲”的數量。 該方法不適用於測量短於一滴答的持續時間。
如果需要更高的精度,則必須使用高分辨率計時器 。
好吧,我自己解決了問題。 我最近轉而使用Sublime Text編寫源C代碼,並制作了一個批處理文件,該文件從.c文件中編譯一個.exe文件,該文件使用Visual Studio 2012的cl.exe工具。
這使我進入了在Visual Studio 2012上使用實際的.exe而不是Local Windows Debugger的東西
這是我意識到+50時鍾僅在Local Windows Debugger上發生的時候 。 我剛剛編寫的代碼會顯示出來; -每次啟動通過Sublime Text + batchCompiler生成的.exe時-0〜1時鍾-每次使用本地Windows時,Visual Studio 2012在%ProjectDirectory%\\Debug\\
下啟動自己生成的.exe時,0〜1時鍾調試器 -但是當我僅查看Visual Studio 2012的本地Windows調試器時,時鍾為50〜51
所以...是的,這只是關於Visual Studio 2012輔助執行
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.