Mercurial > hg > octave-nkf
changeset 1189:ccf2867d8a80
[project @ 1995-03-30 20:25:43 by jwe]
Initial revision
author | jwe |
---|---|
date | Thu, 30 Mar 1995 20:26:09 +0000 |
parents | da82f03f7a51 |
children | 6657d0e6a4bd |
files | scripts/miscellaneous/cputime.m src/resource.cc |
diffstat | 2 files changed, 174 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
new file mode 100644 --- /dev/null +++ b/scripts/miscellaneous/cputime.m @@ -0,0 +1,43 @@ +# Copyright (C) 1995 John W. Eaton +# +# This file is part of Octave. +# +# Octave is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the +# Free Software Foundation; either version 2, or (at your option) any +# later version. +# +# Octave is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# for more details. +# +# You should have received a copy of the GNU General Public License +# along with Octave; see the file COPYING. If not, write to the Free +# Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + +function cputime () + +# usage: cputime +# +# Get CPU time statistics. + + if (nargin != 0) + warning ("cputime: ignoring extra arguments"); + endif + + resource_stats = getrusage (); + + usr = resource_stats.ru_utime; + sys = resource_stats.ru_stime; + + usr_time = usr.tv_sec + usr.tv_usec / 1e6; + sys_time = sys.tv_sec + sys.tv_usec / 1e6; + + retval = zeros (1, 3); + + retval (1) = usr_time + sys_time; + retval (2) = usr_time; + retval (3) = sys_time; + +endfunction
new file mode 100644 --- /dev/null +++ b/src/resource.cc @@ -0,0 +1,131 @@ +// resource.cc -*- C++ -*- +/* + +Copyright (C) 1992, 1993, 1994, 1995 John W. Eaton + +This file is part of Octave. + +Octave is free software; you can redistribute it and/or modify it +under the terms of the GNU General Public License as published by the +Free Software Foundation; either version 2, or (at your option) any +later version. + +Octave is distributed in the hope that it will be useful, but WITHOUT +ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License +along with Octave; see the file COPYING. If not, write to the Free +Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "tree-const.h" +#include "systime.h" +#include "oct-obj.h" +#include "oct-map.h" +#include "defun.h" +#include "utils.h" +#include "help.h" + +#ifdef HAVE_SYS_RESOURCE_H +extern "C" +{ +#include <sys/resource.h> +} +#endif + +#ifndef RUSAGE_SELF +#define RUSAGE_SELF 0 +#endif + +// System resource functions. + +static Octave_map +mk_ru_map (struct rusage *ru) +{ + Octave_map m; + Octave_map tv_tmp; + +#if defined (HAVE_GETRUSAGE) + tv_tmp ["tv_sec"] = (double) ru->ru_utime.tv_sec; + tv_tmp ["tv_usec"] = (double) ru->ru_utime.tv_usec; + m ["ru_utime"] = tree_constant (tv_tmp); + + tv_tmp ["tv_sec"] = (double) ru->ru_stime.tv_sec; + tv_tmp ["tv_usec"] = (double) ru->ru_stime.tv_usec; + m ["ru_stime"] = tree_constant (tv_tmp); + + m ["ru_maxrss"] = (double) ru->ru_maxrss; + m ["ru_ixrss"] = (double) ru->ru_ixrss; + m ["ru_idrss"] = (double) ru->ru_idrss; + m ["ru_isrss"] = (double) ru->ru_isrss; + m ["ru_minflt"] = (double) ru->ru_minflt; + m ["ru_majflt"] = (double) ru->ru_majflt; + m ["ru_nswap"] = (double) ru->ru_nswap; + m ["ru_inblock"] = (double) ru->ru_inblock; + m ["ru_oublock"] = (double) ru->ru_oublock; + m ["ru_msgsnd"] = (double) ru->ru_msgsnd; + m ["ru_msgrcv"] = (double) ru->ru_msgrcv; + m ["ru_nsignals"] = (double) ru->ru_nsignals; + m ["ru_nvcsw"] = (double) ru->ru_nvcsw; + m ["ru_nivcsw"] = (double) ru->ru_nivcsw; +#else + tv_tmp ["tv_sec"] = octave_NaN; + tv_tmp ["tv_usec"] = octave_NaN; + m ["ru_utime"] = tree_constant (tv_tmp); + + tv_tmp ["tv_sec"] = octave_NaN; + tv_tmp ["tv_usec"] = octave_NaN; + m ["ru_stime"] = tree_constant (tv_tmp); + + m ["ru_maxrss"] = octave_NaN; + m ["ru_ixrss"] = octave_NaN; + m ["ru_idrss"] = octave_NaN; + m ["ru_isrss"] = octave_NaN; + m ["ru_minflt"] = octave_NaN; + m ["ru_majflt"] = octave_NaN; + m ["ru_nswap"] = octave_NaN; + m ["ru_inblock"] = octave_NaN; + m ["ru_oublock"] = octave_NaN; + m ["ru_msgsnd"] = octave_NaN; + m ["ru_msgrcv"] = octave_NaN; + m ["ru_nsignals"] = octave_NaN; + m ["ru_nvcsw"] = octave_NaN; + m ["ru_nivcsw"] = octave_NaN; +#endif + + return m; +} + +DEFUN ("getrusage", Fgetrusage, Sgetrusage, 0, 0, + "getrusage ()\n\ +\n\ +Return system resource statistics.") +{ + Octave_object retval; + +#if defined (HAVE_GETRUSAGE) + + struct rusage resource_stats; + + getrusage (RUSAGE_SELF, &resource_stats); + + retval = mk_ru_map (&resource_stats); + +#endif + + return retval; +} + +/* +;;; Local Variables: *** +;;; mode: C++ *** +;;; page-delimiter: "^/\\*" *** +;;; End: *** +*/