Add os.cputime() (#159)
And use it in microbench to get slightly more accurate results.
This commit is contained in:
parent
a140e1cf2c
commit
b6b70e471c
2 changed files with 18 additions and 1 deletions
|
@ -45,6 +45,7 @@
|
||||||
#include <dlfcn.h>
|
#include <dlfcn.h>
|
||||||
#include <termios.h>
|
#include <termios.h>
|
||||||
#include <sys/ioctl.h>
|
#include <sys/ioctl.h>
|
||||||
|
#include <sys/resource.h>
|
||||||
#include <sys/wait.h>
|
#include <sys/wait.h>
|
||||||
|
|
||||||
#if defined(__APPLE__)
|
#if defined(__APPLE__)
|
||||||
|
@ -1948,6 +1949,21 @@ static JSValue js_os_signal(JSContext *ctx, JSValueConst this_val,
|
||||||
return JS_UNDEFINED;
|
return JS_UNDEFINED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef _WIN32
|
||||||
|
static JSValue js_os_cputime(JSContext *ctx, JSValueConst this_val,
|
||||||
|
int argc, JSValueConst *argv)
|
||||||
|
{
|
||||||
|
struct rusage ru;
|
||||||
|
int64_t cputime;
|
||||||
|
|
||||||
|
cputime = 0;
|
||||||
|
if (!getrusage(RUSAGE_SELF, &ru))
|
||||||
|
cputime = (int64_t)ru.ru_utime.tv_sec * 1000000 + ru.ru_utime.tv_usec;
|
||||||
|
|
||||||
|
return JS_NewInt64(ctx, cputime);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(__linux__) || defined(__APPLE__)
|
#if defined(__linux__) || defined(__APPLE__)
|
||||||
static int64_t get_time_us(void)
|
static int64_t get_time_us(void)
|
||||||
{
|
{
|
||||||
|
@ -3617,6 +3633,7 @@ static const JSCFunctionListEntry js_os_funcs[] = {
|
||||||
OS_FLAG(SIGTSTP),
|
OS_FLAG(SIGTSTP),
|
||||||
OS_FLAG(SIGTTIN),
|
OS_FLAG(SIGTTIN),
|
||||||
OS_FLAG(SIGTTOU),
|
OS_FLAG(SIGTTOU),
|
||||||
|
JS_CFUNC_DEF("cputime", 0, js_os_cputime ),
|
||||||
#endif
|
#endif
|
||||||
JS_CFUNC_DEF("now", 0, js_os_now ),
|
JS_CFUNC_DEF("now", 0, js_os_now ),
|
||||||
JS_CFUNC_DEF("setTimeout", 2, js_os_setTimeout ),
|
JS_CFUNC_DEF("setTimeout", 2, js_os_setTimeout ),
|
||||||
|
|
|
@ -98,7 +98,7 @@ var clocks_per_sec = 1000000;
|
||||||
var max_iterations = 100;
|
var max_iterations = 100;
|
||||||
var clock_threshold = 2000; /* favoring short measuring spans */
|
var clock_threshold = 2000; /* favoring short measuring spans */
|
||||||
var min_n_argument = 1;
|
var min_n_argument = 1;
|
||||||
var get_clock = os.now;
|
var get_clock = os.cputime ?? os.now;
|
||||||
|
|
||||||
function log_one(text, n, ti) {
|
function log_one(text, n, ti) {
|
||||||
var ref;
|
var ref;
|
||||||
|
|
Loading…
Reference in a new issue