Home / File/ utils.js — svelte Source File

utils.js — svelte Source File

Architecture documentation for utils.js, a javascript file in the svelte codebase. 2 imports, 3 dependents.

File javascript ReactivityBenchmarks Runner 2 imports 3 dependents 2 functions

Entity Profile

Dependency Diagram

graph LR
  323d279d_1144_2999_b739_63c889964c8c["utils.js"]
  9a0ef8b4_8b6b_ff41_8e66_e738384e956e["node:perf_hooks"]
  323d279d_1144_2999_b739_63c889964c8c --> 9a0ef8b4_8b6b_ff41_8e66_e738384e956e
  a5d953fe_73a4_7cb3_afe0_b620121ac537["v8-natives"]
  323d279d_1144_2999_b739_63c889964c8c --> a5d953fe_73a4_7cb3_afe0_b620121ac537
  bd392727_0ab4_5b19_e7c2_5ac58cda3e66["sbench.js"]
  bd392727_0ab4_5b19_e7c2_5ac58cda3e66 --> 323d279d_1144_2999_b739_63c889964c8c
  23b3e1d7_5601_87e8_cdcc_d7ed42c18fd9["util.js"]
  23b3e1d7_5601_87e8_cdcc_d7ed42c18fd9 --> 323d279d_1144_2999_b739_63c889964c8c
  e992ebb3_c79a_9dda_1e0f_dbe8aa9e3cb5["wrapper_bench.js"]
  e992ebb3_c79a_9dda_1e0f_dbe8aa9e3cb5 --> 323d279d_1144_2999_b739_63c889964c8c
  style 323d279d_1144_2999_b739_63c889964c8c fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

import { performance, PerformanceObserver } from 'node:perf_hooks';
import v8 from 'v8-natives';

// Credit to https://github.com/milomg/js-reactivity-benchmark for the logic for timing + GC tracking.

async function track(fn) {
	v8.collectGarbage();

	/** @type {PerformanceEntry[]} */
	const entries = [];

	const observer = new PerformanceObserver((list) => entries.push(...list.getEntries()));
	observer.observe({ entryTypes: ['gc'] });

	const start = performance.now();
	fn();
	const end = performance.now();

	await new Promise((f) => setTimeout(f, 10));

	const gc_time = entries
		.filter((e) => e.startTime >= start && e.startTime < end)
		.reduce((t, e) => e.duration + t, 0);

	observer.disconnect();

	return { time: end - start, gc_time };
}

/**
 * @param {number} times
 * @param {() => void} fn
 */
export async function fastest_test(times, fn) {
	/** @type {Array<{ time: number, gc_time: number }>} */
	const results = [];

	for (let i = 0; i < times; i++) {
		results.push(await track(fn));
	}

	return results.reduce((a, b) => (a.time < b.time ? a : b));
}

Subdomains

Dependencies

  • node:perf_hooks
  • v8-natives

Frequently Asked Questions

What does utils.js do?
utils.js is a source file in the svelte codebase, written in javascript. It belongs to the ReactivityBenchmarks domain, Runner subdomain.
What functions are defined in utils.js?
utils.js defines 2 function(s): fastest_test, track.
What does utils.js depend on?
utils.js imports 2 module(s): node:perf_hooks, v8-natives.
What files import utils.js?
utils.js is imported by 3 file(s): sbench.js, util.js, wrapper_bench.js.
Where is utils.js in the architecture?
utils.js is located at benchmarking/utils.js (domain: ReactivityBenchmarks, subdomain: Runner, directory: benchmarking).

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free