@Hide(posixImpl = PosixImpl.JAVA) public static PyTuple times() { Times times = posix.times(); long CLK_TCK = Sysconf._SC_CLK_TCK.longValue(); return new PyTuple( ratio(times.utime(), CLK_TCK), ratio(times.stime(), CLK_TCK), ratio(times.cutime(), CLK_TCK), ratio(times.cstime(), CLK_TCK), ratio(ManagementFactory.getRuntimeMXBean().getUptime(), 1000) ); }
public static IRubyObject times(Ruby runtime) { Times tms = runtime.getPosix().times(); double utime = 0.0d, stime = 0.0d, cutime = 0.0d, cstime = 0.0d; if (tms == null) { ThreadMXBean bean = ManagementFactory.getThreadMXBean(); if(bean.isCurrentThreadCpuTimeSupported()) { cutime = utime = bean.getCurrentThreadUserTime(); cstime = stime = bean.getCurrentThreadCpuTime() - bean.getCurrentThreadUserTime(); } } else { utime = (double)tms.utime(); stime = (double)tms.stime(); cutime = (double)tms.cutime(); cstime = (double)tms.cstime(); } long hz = runtime.getPosix().sysconf(Sysconf._SC_CLK_TCK); if (hz == -1) { hz = 60; //https://github.com/ruby/ruby/blob/trunk/process.c#L6616 } return RubyStruct.newStruct(runtime.getTmsStruct(), new IRubyObject[] { runtime.newFloat(utime / (double) hz), runtime.newFloat(stime / (double) hz), runtime.newFloat(cutime / (double) hz), runtime.newFloat(cstime / (double) hz) }, Block.NULL_BLOCK); }
public static IRubyObject times(Ruby runtime) { Times tms = runtime.getPosix().times(); double utime = 0.0d, stime = 0.0d, cutime = 0.0d, cstime = 0.0d; if (tms == null) { ThreadMXBean bean = ManagementFactory.getThreadMXBean(); if(bean.isCurrentThreadCpuTimeSupported()) { cutime = utime = bean.getCurrentThreadUserTime(); cstime = stime = bean.getCurrentThreadCpuTime() - bean.getCurrentThreadUserTime(); } } else { utime = (double)tms.utime(); stime = (double)tms.stime(); cutime = (double)tms.cutime(); cstime = (double)tms.cstime(); } long hz = runtime.getPosix().sysconf(Sysconf._SC_CLK_TCK); if (hz == -1) { hz = 60; //https://github.com/ruby/ruby/blob/trunk/process.c#L6616 } return RubyStruct.newStruct(runtime.getTmsStruct(), new IRubyObject[] { runtime.newFloat(utime / (double) hz), runtime.newFloat(stime / (double) hz), runtime.newFloat(cutime / (double) hz), runtime.newFloat(cstime / (double) hz) }, Block.NULL_BLOCK); }
public static IRubyObject times(Ruby runtime) { Times tms = runtime.getPosix().times(); if (tms == null) { throw runtime.newErrnoFromLastPOSIXErrno(); } long hz = runtime.getPosix().sysconf(Sysconf._SC_CLK_TCK); if (hz == -1) { throw runtime.newErrnoFromLastPOSIXErrno(); } return RubyStruct.newStruct(runtime.getTmsStruct(), new IRubyObject[] { runtime.newFloat((double) tms.utime() / (double) hz), runtime.newFloat((double) tms.stime() / (double) hz), runtime.newFloat((double) tms.cutime() / (double) hz), runtime.newFloat((double) tms.cstime() / (double) hz) }, Block.NULL_BLOCK); }
public static IRubyObject times(Ruby runtime) { Times tms = runtime.getPosix().times(); if (tms == null) { throw runtime.newErrnoFromLastPOSIXErrno(); } long hz = runtime.getPosix().sysconf(Sysconf._SC_CLK_TCK); if (hz == -1) { throw runtime.newErrnoFromLastPOSIXErrno(); } return RubyStruct.newStruct(runtime.getTmsStruct(), new IRubyObject[] { runtime.newFloat((double) tms.utime() / (double) hz), runtime.newFloat((double) tms.stime() / (double) hz), runtime.newFloat((double) tms.cutime() / (double) hz), runtime.newFloat((double) tms.cstime() / (double) hz) }, Block.NULL_BLOCK); }