difftime *

[機能]

  指定された時間の差を計算し,秒単位で返します.clock 関数とは異なり,CPU 時間ではありません.

  Java の場合は,Date クラスCalendar クラスを用いて現在時刻を取得できます.ただし,起点は,1970 年の 1 月であり,ミリ秒単位でカウントします.

  クラスのインスタンスを生成することによって時間を取得できます.Date クラスの場合は,それを文字列に変換( toString() )したり,ミリ秒単位の経過時間( C/C++ の time 関数で得られるものに相当)に変換( getTime() )して利用します.また,Calendar クラスの場合は,フィールド名を指定して get 関数によって年や月を得ることが可能です.

[形式]
	#include <time.h>

	double difftime(time_t time1, time_t time0)
		time1 : 終了時刻
		time0 : 開始時刻
		
[使用例]

  1. sin を 5000000 回計算するのにかかる時間を計測します(C/C++)
    #include <stdio.h>
    #include <time.h>
    #include <math.h>
    
    int main()
    {
    	time_t start, finish;
    	long i1;
    	double x, y;
    
    	time(&start);
    
    	for (i1 = 0; i1 < 5000000; i1++) {
    		y = (double)(i1 % 5);
    		x = sin(y);
    	}
    
    	time(&finish);
    
    	printf("計算時間は %f 秒です\n", difftime(finish, start));
    
    	return 0;
    }
    
    (出力)
    
    計算時間は 5.000000 秒です
    			
  2. sin を 5000000 回計算するのにかかる時間を計測します(Java)
    import java.io.*;
    import java.util.Date;
    import java.util.Calendar;
    
    public class Test {
    
    	public static void main(String args[]) throws IOException
    	{
    		long start, finish;
    		int i1;
    		double x, y;
    
    		Date newtime = new Date();   // 現在時刻の獲得
    		start = newtime.getTime();
    
    		for (i1 = 0; i1 < 5000000; i1++) {
    			y = (double)(i1 % 5);
    			x = Math.sin(y);
    		}
    
    		newtime = new Date();   // 現在時刻の獲得
    		finish  = newtime.getTime();
    
    		System.out.print("計算時間は " + (finish - start) + " ミリ秒です\n");
    	}
    }
    
    (出力)
    
    計算時間は 50 ミリ秒です
    			
[参照]

clock, time

ホームページ 目次 演習解答例目次 付録目次 索引