diff options
author | snek <snek@deno.com> | 2024-11-08 23:20:24 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-11-08 23:20:24 +0100 |
commit | 73fbd61bd016eebbf2776dc94c15a26bf39668d6 (patch) | |
tree | c7e5f4ee47f94f2279e745b1825959f82a66a22d /cli | |
parent | d4f1bd3dacf54c4625eef7828341b39286ead8cb (diff) |
fix: performance.timeOrigin (#26787)
`performance.timeOrigin` was being set from when JS started executing,
but `op_now` measures from an `std::time::Instant` stored in `OpState`,
which is created at a completely different time. This caused
`performance.timeOrigin` to be very incorrect. This PR corrects the
origin and also cleans up some of the timer code.
Compared to `Date.now()`, `performance`'s time origin is now
consistently within 5us (0.005ms) of system time.

Diffstat (limited to 'cli')
-rw-r--r-- | cli/ops/bench.rs | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/cli/ops/bench.rs b/cli/ops/bench.rs index 79a7ddef0..1f4a4bd9b 100644 --- a/cli/ops/bench.rs +++ b/cli/ops/bench.rs @@ -2,7 +2,6 @@ use std::sync::atomic::AtomicUsize; use std::sync::atomic::Ordering; -use std::time; use deno_core::error::generic_error; use deno_core::error::type_error; @@ -13,6 +12,7 @@ use deno_core::ModuleSpecifier; use deno_core::OpState; use deno_runtime::deno_permissions::ChildPermissionsArg; use deno_runtime::deno_permissions::PermissionsContainer; +use deno_runtime::deno_web::StartTime; use tokio::sync::mpsc::UnboundedSender; use uuid::Uuid; @@ -148,7 +148,7 @@ fn op_dispatch_bench_event(state: &mut OpState, #[serde] event: BenchEvent) { #[op2(fast)] #[number] fn op_bench_now(state: &mut OpState) -> Result<u64, std::num::TryFromIntError> { - let ns = state.borrow::<time::Instant>().elapsed().as_nanos(); + let ns = state.borrow::<StartTime>().elapsed().as_nanos(); let ns_u64 = u64::try_from(ns)?; Ok(ns_u64) } |