profile.h
Go to the documentation of this file.
/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
/* ====================================================================
* Copyright (c) 1999-2001 Carnegie Mellon University. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* This work was supported in part by funding from the Defense Advanced
* Research Projects Agency and the National Science Foundation of the
* United States of America, and the CMU Sphinx Speech Consortium.
*
* THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
* ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
* NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* ====================================================================
*
*/
/*
* profile.h -- For timing and event counting.
*
* **********************************************
* CMU ARPA Speech Project
*
* Copyright (c) 1999 Carnegie Mellon University.
* ALL RIGHTS RESERVED.
* **********************************************
*
* HISTORY
* $Log: profile.h,v $
* Revision 1.10 2005/06/22 03:10:59 arthchan2003
* 1, Fixed doxygen documentation, 2, Added keyword.
*
* Revision 1.5 2005/06/15 04:21:47 archan
* 1, Fixed doxygen-documentation, 2, Add keyword such that changes will be logged into a file.
*
* Revision 1.4 2005/04/25 19:22:48 archan
* Refactor out the code of rescoring from lexical tree. Potentially we want to turn off the rescoring if we need.
*
* Revision 1.3 2005/03/30 01:22:48 archan
* Fixed mistakes in last updates. Add
*
*
* 11-Mar-1999 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
* Added ptmr_init().
*
* 19-Jun-97 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University
* Created from earlier Sphinx-3 version.
*/
#ifndef _LIBUTIL_PROFILE_H_
#define _LIBUTIL_PROFILE_H_
#ifdef __cplusplus
extern "C" {
#endif
#if 0
} /* Fool Emacs into not indenting things. */
#endif
#include <stdio.h>
/* Win32/WinCE DLL gunk */
#include <sphinxbase/sphinxbase_export.h>
#include <sphinxbase/prim_type.h>
typedef struct {
char *name;
int32 count;
} pctr_t;
SPHINXBASE_EXPORT
pctr_t* pctr_new (
char *name
);
SPHINXBASE_EXPORT
void pctr_reset (pctr_t *ctr
);
SPHINXBASE_EXPORT
void pctr_print(FILE *fp,
pctr_t *ctr
);
SPHINXBASE_EXPORT
void pctr_increment (pctr_t *ctr,
int32 inc
);
SPHINXBASE_EXPORT
void pctr_free(pctr_t* ctr
);
typedef struct {
const char *name;
float64 t_cpu;
float64 t_elapsed;
float64 t_tot_cpu;
float64 t_tot_elapsed;
float64 start_cpu;
float64 start_elapsed;
} ptmr_t;
SPHINXBASE_EXPORT
void ptmr_start (ptmr_t *tmr
);
SPHINXBASE_EXPORT
void ptmr_stop (ptmr_t *tmr
);
SPHINXBASE_EXPORT
void ptmr_reset (ptmr_t *tmr
);
SPHINXBASE_EXPORT
void ptmr_init (ptmr_t *tmr
);
SPHINXBASE_EXPORT
void ptmr_reset_all (ptmr_t *tmr
);
SPHINXBASE_EXPORT
void ptmr_print_all (FILE *fp,
ptmr_t *tmr,
float64 norm
);
SPHINXBASE_EXPORT
int32 host_pclk (int32 dummy);
/*
* Check the native byte-ordering of the machine by writing a magic
* number to a temporary file and reading it back. * Return value:
* 0 if BIG-ENDIAN, 1 if LITTLE-ENDIAN, -1 if error.
*/
SPHINXBASE_EXPORT
int32 host_endian ( void );
#ifdef __cplusplus
}
#endif
#endif
ptmr_reset_all
SPHINXBASE_EXPORT void ptmr_reset_all(ptmr_t *tmr)
Reset t_cpu, t_elapsed of all timer modules in array tmr[] to 0.0.
Definition: profile.c:275
pctr_new
SPHINXBASE_EXPORT pctr_t * pctr_new(char *name)
operations of pctr_t
Definition: profile.c:107
pctr_t::count
int32 count
Counter value.
Definition: profile.h:104
ptmr_start
SPHINXBASE_EXPORT void ptmr_start(ptmr_t *tmr)
Start timing using tmr.
Definition: profile.c:178
host_pclk
SPHINXBASE_EXPORT int32 host_pclk(int32 dummy)
Return the processor clock speed (in MHz); only available on some machines (Alphas).
ptmr_t::t_tot_elapsed
float64 t_tot_elapsed
Total elapsed time since creation.
Definition: profile.h:163
ptmr_t
Generic timer structures and functions for coarse-grained performance measurements using standard sys...
Definition: profile.h:157
ptmr_t::start_elapsed
float64 start_elapsed
-— FOR INTERNAL USE ONLY -—
Definition: profile.h:165
ptmr_t::start_cpu
float64 start_cpu
-— FOR INTERNAL USE ONLY -—
Definition: profile.h:164
prim_type.h
Basic type definitions used in Sphinx.
ptmr_t::name
const char * name
Timer print name; NULL terminates an array of timers.
Definition: profile.h:158
pctr_free
SPHINXBASE_EXPORT void pctr_free(pctr_t *ctr)
Free the counter.
Definition: profile.c:140
pctr_print
SPHINXBASE_EXPORT void pctr_print(FILE *fp, pctr_t *ctr)
Print a counter.
Definition: profile.c:133
ptmr_t::t_cpu
float64 t_cpu
CPU time accumulated since most recent reset op.
Definition: profile.h:160
ptmr_t::t_tot_cpu
float64 t_tot_cpu
Total CPU time since creation.
Definition: profile.h:162
ptmr_print_all
SPHINXBASE_EXPORT void ptmr_print_all(FILE *fp, ptmr_t *tmr, float64 norm)
Print t_cpu for all timer modules in tmr[], normalized by norm (i.e., t_cpu/norm).
Definition: profile.c:283
pctr_increment
SPHINXBASE_EXPORT void pctr_increment(pctr_t *ctr, int32 inc)
Increment a counter.
Definition: profile.c:126
pctr_reset
SPHINXBASE_EXPORT void pctr_reset(pctr_t *ctr)
Reset a counter.
Definition: profile.c:119
ptmr_init
SPHINXBASE_EXPORT void ptmr_init(ptmr_t *tmr)
Reset tmr->{t_cpu, t_elapsed, t_tot_cpu, t_tot_elapsed} to 0.0.
Definition: profile.c:265
ptmr_stop
SPHINXBASE_EXPORT void ptmr_stop(ptmr_t *tmr)
Stop timing and accumulate tmr->{t_cpu, t_elapsed, t_tot_cpu, t_tot_elapsed}.
Definition: profile.c:212
ptmr_t::t_elapsed
float64 t_elapsed
Elapsed time accumulated since most recent reset.
Definition: profile.h:161
ptmr_reset
SPHINXBASE_EXPORT void ptmr_reset(ptmr_t *tmr)
Reset tmr->{t_cpu, t_elapsed} to 0.0.
Definition: profile.c:257
pctr_t::name
char * name
Counter print name; NULL terminates array of counters Used by pctr_print_all.
Definition: profile.h:101
pctr_t
Generic event counter for profiling.
Definition: profile.h:100