我有一個遞增的整數值,並且希望找到該整數的每秒平均值。我知道C中不存在定時器,除非你做了一些特定的和複雜的事情[對於C來說是新的]有沒有更簡單的方法來做到這一點?優選地,當進行計算時,該值將被重置,以便在該應用程序將長時間運行的內存中不具有如此大的數量。在C中計算每秒的平均值
回答
我想你會想包括time.h
,並使用它的一些函數和結構(這實際上並不是學習C的基礎知識的一個壞方法)。有一個解釋和幾個例子here。
如果您需要亞秒級精度,我建議您使用clock_gettime()
,這將使您獲得納秒級分辨率。
下面是一個例子:
#include <stdio.h>
#include <time.h>
struct timespec diff(struct timespec start, struct timespec end);
int main()
{
struct timespec time1, time2, timeDiff;
int temp, i;
// Get the start time
clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &time1);
// Do some work
for (i = 0; i< 242000000; i++)
temp+=temp;
// Get the end time
clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &time2);
// Calculate the difference
timeDiff = diff(time1,time2);
printf("%d.%d\n", timeDiff.tv_sec, timeDiff.tv_nsec);
return 0;
}
struct timespec diff(struct timespec start, struct timespec end)
{
struct timespec temp;
if ((end.tv_nsec-start.tv_nsec)<0) {
temp.tv_sec = end.tv_sec-start.tv_sec-1;
temp.tv_nsec = 1000000000+end.tv_nsec-start.tv_nsec;
} else {
temp.tv_sec = end.tv_sec-start.tv_sec;
temp.tv_nsec = end.tv_nsec-start.tv_nsec;
}
return temp;
}
你需要的東西,如編譯:
gcc -o timetest timetest.c -lrt
命令的-lrt
部分告訴C連接器鏈接到實時庫,包含clock_gettime()
的定義。
令人驚歎!謝謝!我讚賞你也解釋了編譯器標誌! – Andrei0427
我有一個問題,我如何計時一秒,使用API的gettime方法,直到一秒鐘過去? – Andrei0427
這可能會很棘手。你可以重複調用'clock_gettime()'並在1秒後停止,或者你可以'sleep()'1秒。但是如果你想繼續在後臺處理事物,並且有另一個過程來關注時間,那麼你將不得不使用線程或某種事件處理程序......並且這兩個選項都是「特定的複雜「,在OP中使用你的術語。 –
您可以使用gettimeofday()
來獲得時間值。你需要存儲一個這樣的閱讀,以便你可以比較最近的閱讀和老閱讀,並找出它們之間的時間。如果在幾秒鐘內完成此操作,則可以按照該時間間隔分割整數,並獲得每秒的平均值。
- 1. 每週計算平均值
- 2. 每16秒計算一次文件中的平均值
- 3. 在C++中計算移動平均值
- 4. 計算平均值的平均值
- 5. C#Datatable:計算列中的平均值
- 6. 計算每列的平均值,R
- 7. 計算C中2D數組中每列的平均值?
- 8. 如何計算MS reportviewer/rdlc中的平均計算平均值?
- 9. 計算平均值?
- 10. 計算平均值?
- 11. 計算平均值
- 12. 計算平均每組
- 13. MySQL的 - 計算平均值
- 14. 在Python中用數據框計算平均值/平均值Pandas
- 15. C++計算平均值和標準差
- 16. C程序計算平均值
- 17. 在MATLAB中以小時計算的平均數據平均值
- 18. 在Tableau中,如何計算每日的加權平均值?
- 19. 在SQL Server中計算每行的平均值
- 20. 尾均值的計算(平均)列
- 21. 在VBA中計算平均值
- 22. 在程序集中計算平均值
- 23. 在Haskell中計算移動平均值
- 24. 在SQLite3中計算多列平均值
- 25. 在SQL查詢中計算平均值
- 26. VBA計算平均值
- 27. Rails計算平均值belongs_to
- 28. 以PHP計算平均值
- 29. java計算平均值
- 30. 計算實際平均值
你在運行這個程序的平臺是什麼樣的? – unwind
在Linux/UNIX上運行這個 – Andrei0427
你問過一個「更簡單」的方法嗎?比什麼更簡單?顯示你當前的代碼,我們可以提出更好的方法。 – Barmar