js performance checker All In One
js 性能检测
-
console.time
-
console.timeLog
-
console.timeEnd
console.time(`⏰ performance`);
for(let i = 0; i < 10**3; i += 100) {
console.timeLog(`⏰ performance`);
}
console.timeEnd(`⏰ performance`);
⏰ performance: 0.01123046875 ms
⏰ performance: 0.06103515625 ms
⏰ performance: 0.0869140625 ms
⏰ performance: 0.10009765625 ms
⏰ performance: 0.1142578125 ms
⏰ performance: 0.130126953125 ms
⏰ performance: 0.14697265625 ms
⏰ performance: 0.158935546875 ms
⏰ performance: 0.175048828125 ms
⏰ performance: 0.18603515625 ms
⏰ performance: 0.2021484375 ms
console.time(`⏰ performance`);
for(let i = 0; i < 10**3; i += 100) {
console.log(`i =`, i);
}
console.timeEnd(`⏰ performance`);
// ⏰ performance: 0.166259765625 ms
performance.now
高精度时间戳
const t1 = performance.now();
for(let i = 0; i < 10**3; i += 100) {
console.log(`i =`, i);
}
const t2 = performance.now();
console.log(`⏰ performance`, t2 - t1);
//
const t1 = new Date();
for(let i = 0; i < 10**3; i += 100) {
console.log(`i =`, i);
}
const t2 = new Date();
console.log(`⏰ performance`, t2 - t1);
https://developer.mozilla.org/en-US/docs/Web/API/Performance
demos
"use strict";
/**
*
* @author xgqfrms
* @license MIT
* @copyright xgqfrms
* @created 2023-02-19
* @modified
*
* @description 454. 四数相加 II
* @description 454. 4Sum II
* @difficulty Medium
* @ime_complexity O(n)
* @space_complexity O(n)
* @augments
* @example
* @link https://leetcode.com/problems/4sum-ii/
* @link https://leetcode.cn/problems/4sum-ii/
* @solutions
*
* @best_solutions
*
*/
// export {};
const log = console.log;
function fourSumCount(nums1: number[], nums2: number[], nums3: number[], nums4: number[]): number {
if(nums1.length === 1) {
return nums1[0] + nums2[0] + nums3[0] + nums4[0] === 0 ? 1 : 0;
}
let num = 0;
for(let i of nums1) {
for(let ii of nums2) {
for(let iii of nums3) {
for(let iiii of nums4) {
let temp = i + ii + iii + iiii;
// console.log(`temp =`, temp);
if(temp === 0) {
num += 1;
}
}
}
}
}
// console.log(`num =`, num);
return num;
};
/*
Runtime Error
<--- Last few GCs --->
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
Time Limit Exceeded
[2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2]
[-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2]
*/
const nums = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];
const nums12 = [2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2];
const nums34 = [-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2]
// 测试用例 test cases
const testCases = [
{
input: [[1,2], [-2,-1], [-1,2], [0,2]],
result: 2,
desc: 'value equal to 2',
},
{
input: [[0], [0], [0], [0]],
result: 1,
desc: 'value equal to 1',
},
{
input: [nums, nums, nums, nums],
result: 100000000,
desc: 'value equal to 100000000',
},
{
input: [nums12, nums12, nums34, nums34],
result: 1600000000,
desc: 'value equal to 1600000000',
},
];
for (const [i, testCase] of testCases.entries()) {
console.time(`⏰ performance`);
const [first, second, third, fourth] = testCase.input;
const result = fourSumCount(first, second, third, fourth);
log(`test case ${i} result: `, result === testCase.result ? `✅ passed` : `❌ failed`, result);
console.timeLog(`⏰ performance`);
console.timeEnd(`⏰ performance`);
}
// $ npx ts-node ./454\ 4sum-ii.ts
/*
test case 0 result: ✅ passed 2
⏰ performance: 1.12ms
⏰ performance: 1.268ms
test case 1 result: ✅ passed 1
⏰ performance: 0.044ms
⏰ performance: 0.079ms
test case 2 result: ✅ passed 100000000
⏰ performance: 212.757ms
⏰ performance: 212.815ms
test case 3 result: ✅ passed 1600000000
⏰ performance: 3.090s
⏰ performance: 3.090s
*/