Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
4758 right-hear 1
/*
2
 * Copyright (c) 2005, Hervé Drolon, FreeImage Team
3
 * All rights reserved.
4
 *
5
 * Redistribution and use in source and binary forms, with or without
6
 * modification, are permitted provided that the following conditions
7
 * are met:
8
 * 1. Redistributions of source code must retain the above copyright
9
 *    notice, this list of conditions and the following disclaimer.
10
 * 2. Redistributions in binary form must reproduce the above copyright
11
 *    notice, this list of conditions and the following disclaimer in the
12
 *    documentation and/or other materials provided with the distribution.
13
 *
14
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
15
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
18
 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
19
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
20
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
21
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
22
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
23
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
24
 * POSSIBILITY OF SUCH DAMAGE.
25
 */
26
 
27
#ifdef _WIN32
28
#include 
29
#else
30
#include 
31
#include 
32
#include 
33
#endif /* _WIN32 */
34
#include "opj_includes.h"
35
 
36
double opj_clock(void) {
37
#ifdef _WIN32
38
	/* _WIN32: use QueryPerformance (very accurate) */
39
    LARGE_INTEGER freq , t ;
40
    /* freq is the clock speed of the CPU */
41
    QueryPerformanceFrequency(&freq) ;
42
	/* cout << "freq = " << ((double) freq.QuadPart) << endl; */
43
    /* t is the high resolution performance counter (see MSDN) */
44
    QueryPerformanceCounter ( & t ) ;
45
    return ( t.QuadPart /(double) freq.QuadPart ) ;
46
#else
47
	/* Unix or Linux: use resource usage */
48
    struct rusage t;
49
    double procTime;
50
    /* (1) Get the rusage data structure at this moment (man getrusage) */
51
    getrusage(0,&t);
52
    /* (2) What is the elapsed time ? - CPU time = User time + System time */
53
	/* (2a) Get the seconds */
54
    procTime = t.ru_utime.tv_sec + t.ru_stime.tv_sec;
55
    /* (2b) More precisely! Get the microseconds part ! */
56
    return ( procTime + (t.ru_utime.tv_usec + t.ru_stime.tv_usec) * 1e-6 ) ;
57
#endif
58
}
59