C言語のミリ秒とマイクロ秒の時間を入手する方法

最近の実行では、いくつかのプログラムが計算時間のプログラムの実行を要求し、その後、ビット関連資料を検索し、見つけるための良い方法を以下、ミリ秒のタイミングを実現することができます。 

#include <sys/timeb.h>

#if defined(WIN32)
# define  TIMEB    _timeb
# define  ftime    _ftime
#else
#define TIMEB timeb
#endif


time_t ltime1, ltime2, tmp_time;
  struct TIMEB tstruct1, tstruct2;
  
  ftime (&tstruct1);            // start time ms
  time (&ltime1);               // start time s
  //work
  time (&ltime2);               // end time sec
  ftime (&tstruct2);            // end time ms

  tmp_time = (ltime2 * 1000 + tstruct2.millitm) - (ltime1 * 1000 + tstruct1.millitm);

次のコードは、WindowsとLinuxのインターネットでのミリ秒のタイミングプログラムであってもよいです。

メモリの割り当て手順提示タイミングの時間のかかる方法に何千回もあります。

ミリ秒のタイミングの主な機能FTIMEの使用は、我々はミリ秒のタイミングを得ることができるようにFTIMEは、秒、ミリ秒単位で現在の時刻を取得することができます。

あなたはミリ秒単位で出力時間にしたい場合は、あなたは表現するために64ビットのデータ・タイプを使用する必要があります。Linux上のウィンドウが__int64を使用しながらのprintf。、長い長さであり、対応する低出力の64ビットのケースを使用する必要がありますか。それ以外の場合、出力は、そのオーバーフローマイナスになります。

Linuxである:のprintf( "%のLLD"、n)は、

窓は次のとおりです:のprintf( "%I64d"、n)は、 

#include <stdio.h>
#include <sys/timeb.h>
#include <stdlib.h>
#if defined(WIN32)
# define  TIMEB    _timeb
# define  ftime    _ftime
typedef __int64 TIME_T;
#else
#define TIMEB timeb
typedef long long TIME_T;
#endif
int time_interval()
{
    struct TIMEB ts1,ts2;
    TIME_T t1,t2;
    int ti;
    ftime(&ts1);//开始计时
    //do some work
    {
        int i;
        for(i=0;i<100000;i++)
        {
            int *p=malloc(10000);
            int *q=malloc(10000);
            int *s=malloc(10000);
            int *t=malloc(10000);
            free(p);
            free(q);
            free(s);
            free(t);
        }
    }
    ftime(&ts2);//停止计时
    t1=(TIME_T)ts1.time*1000+ts1.millitm;
    printf("t1=%lld\n",t1);
    t2=(TIME_T)ts2.time*1000+ts2.millitm;
    printf("t2=%lld\n",t2);
    ti=t2-t1;//获取时间间隔,ms为单位的

    return ti;
}
int main()
{
    int ti=time_interval();
    printf("time interval=%d\n",ti);
}



あなただけのシンプルな間隔を取得した場合しかし、実際には、それらは2時間のうちの第2の減算がかかるので、その結果は次のようにコードは、比較的小さい、64個の質問を考慮していません。


#include <stdio.h>
#include <sys/timeb.h>
#include <stdlib.h>
#if defined(WIN32)
# define  TIMEB    _timeb
# define  ftime    _ftime
#else
#define TIMEB timeb
#endif
int time_interval()
{
    struct TIMEB ts1,ts2;
    time_t t_sec,ti;
    ftime(&ts1);//开始计时
    //do some work
    {
        int i;
        for(i=0;i<100000;i++)
        {
            int *p=malloc(10000);
            int *q=malloc(10000);
            int *s=malloc(10000);
            int *t=malloc(10000);
            free(p);
            free(q);
            free(s);
            free(t);
        }
    }

    ftime(&ts2);//停止计时
    t_sec=ts2.time-ts1.time;//计算秒间隔
    t_ms=ts2.millitm-ts1.millitm;//计算毫秒间隔
    ti=t_sec*1000+t_ms;

    return ti;
}
int main()
{
    int ti=time_interval();
    printf("time interval=%d\n",ti);
}

次のWebサイトより引用:

https://www.cnblogs.com/xkfz007/archive/2011/11/14/2248394.html

おすすめ

転載: blog.csdn.net/zilong9000/article/details/93721724