国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Linux > 正文

linux獲取進程執行時間方法示例

2024-08-28 00:01:09
字體:
來源:轉載
供稿:網友
linux獲取進程執行時間有兩種方法可以獲取,第一種是用time命令,time 進程。第二種是通過在程序中進行記錄,首先利用sysconf函數獲取時鐘滴答數,再用times獲取tms結構,詳細看下面的示例代碼

1、前言

測試一個程序的執行時間,時間包括用戶CPU時間、系統CPU時間、時鐘時間。之前獲取之前時間都是在程序的main函數用time函數實現,這個只能粗略的計算程序的執行時間,不能準確的獲取其他時間。在看《APUE》時,書中有關程序時間測試程序,非常正規,提供這三個時間。如是,上網搜了一下,進行總結一下。

2、獲取方法

有兩種方法可以獲取,第一種是用time命令,time 進程。第二種是通過在程序中進行記錄,首先利用sysconf函數獲取時鐘滴答數,再用times獲取tms結構。

查看times函數,man 2 tms,得到tms結構定義和times函數聲明如下:

復制代碼 代碼如下:
struct tms {
       clock_t tms_utime;  /* user time */
       clock_t tms_stime;  /* system time */
       clock_t tms_cutime; /* user time of children */
       clock_t tms_cstime; /* system time of children */
  };

復制代碼 代碼如下:
#include <sys/times.h>

 clock_t times(struct tms *buf);

注意:此處計算的時間是時鐘滴答數,需要除以系統時鐘滴答數,得出實際的秒數。

3、測試例子:

測試程序如下:

復制代碼 代碼如下:
#include <stdio.h>
#include <stdlib.h>
#include <sys/times.h>
#include <unistd.h>

#define BUFFER_SIZE  4 * 1024

int main()
{
    int sc_clk_tck;
    sc_clk_tck = sysconf(_SC_CLK_TCK);

    struct tms begin_tms, end_tms;
    clock_t begin, end;
    system("date");
    begin = times(&begin_tms);
    sleep(2);
    end = times(&end_tms);

    printf("real time: %lf/n", (end - begin) / (double)sc_clk_tck);
    printf("user time: %lf/n",
            (end_tms.tms_utime - begin_tms.tms_utime) / (double)sc_clk_tck);
    printf("sys time: %lf/n",
            (end_tms.tms_stime - begin_tms.tms_stime) / (double)sc_clk_tck);
    printf("child user time: %lf/n",
            (end_tms.tms_cutime - begin_tms.tms_cutime) / (double)sc_clk_tck);
    printf("child sys time: %lf/n",
            (end_tms.tms_cstime - begin_tms.tms_cstime) / (double)sc_clk_tck);
    return 0;
}


測試結果如下所示:

采用time命令,測試結果如下所示:

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 铜川市| 兰考县| 新兴县| 富蕴县| 边坝县| 枞阳县| 山丹县| 沂南县| 潜山县| 宜昌市| 武夷山市| 敦煌市| 溧阳市| 商河县| 丽水市| 敦化市| 安徽省| 定兴县| 阿图什市| 正蓝旗| 桃园市| 忻城县| 德兴市| 沙河市| 徐闻县| 额尔古纳市| 蕉岭县| 黑水县| 金门县| 拉孜县| 巨野县| 禄丰县| 农安县| 原阳县| 平武县| 陆丰市| 洞头县| 沈阳市| 安新县| 肇庆市| 集贤县|