Skip to content

Instantly share code, notes, and snippets.

View victor-homyakov's full-sized avatar

Victor Homyakov victor-homyakov

View GitHub Profile
@victor-homyakov
victor-homyakov / sort-perf-map.js
Created January 8, 2024 12:53
Sort perf-PID.map file generated by Node.js
const fs = require('node:fs');
const readline = require('node:readline');
const fileName = process.argv[2];
if (!fileName) {
console.error('Please specify map file name as the first argument');
process.exit(1);
}
function extractAddress(/*string*/line) {
@victor-homyakov
victor-homyakov / index.js
Created December 21, 2023 21:30
Benchmark startup time
// Use dependencies from https://gist.github.com/victor-homyakov/b41cd9dbea99eec870464cf49bb019a7
require("@nestjs/axios");
require("@nestjs/common");
require("@nestjs/config");
require("@nestjs/core");
require("@nestjs/platform-express");
require("@nestjs/swagger");
require("@nestjs/terminus");
require("@nestjs/throttler");
require("@sentry/node");
@victor-homyakov
victor-homyakov / package.json
Created December 16, 2023 13:22
package.json to benchmark installation of dependencies
{
"name": "install-benchmark",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "Victor Homyakov",
@victor-homyakov
victor-homyakov / buffers.js
Created December 4, 2023 22:49
Log parsing benchmark
// To avoid slowdown from GC, run node with the following keys:
// --expose-gc --initial-old-space-size=1024
const fs = require('fs');
//const heapdump = require('heapdump');
const buffers = fs.readFileSync('buffers.txt').toString().split('\n');
const parse1 = line => {
let rv = {};
@victor-homyakov
victor-homyakov / benchmark-utils.js
Created October 28, 2023 17:49
Benchmark: show minimum, median, maximum values
/*
* Wrapper for https://www.npmjs.com/package/benchmark
* Calculates minimum, median, maximum values of the sample
*/
const Benchmark = require('benchmark');
const units = ['s/op', 'ms/op', 'μs/op', 'ns/op'];
/**
@victor-homyakov
victor-homyakov / links - benchmarks and performance tests 2023.md
Last active January 26, 2024 16:09
Ссылки для презентации "Бенчмарки и performance-тесты для JavaScript/TypeScript" HolyJS 2023
@victor-homyakov
victor-homyakov / sort-object-properties.js
Created April 21, 2023 15:56
Sort object properties depending on their usage frequency: place most used first.
const estraverse = require('estraverse');
const espree = require('espree');
const escodegen = require('escodegen');
const fs = require('fs');
const path = require('path');
function getNameProp(prop) {
if (prop.type === 'SpreadElement') {
return prop;
}
@victor-homyakov
victor-homyakov / links - task scheduler - do not freeze the page 2022.md
Created November 4, 2022 20:10
Ссылки для презентации "Планировщик задач: не замораживаем страницу" HolyJS 2022
@victor-homyakov
victor-homyakov / links - memory limits in node.js and browsers.md
Created August 31, 2022 12:15
Ссылки для презентации "Ограничения на размер типов данных в Node.js и браузерах" Яндекс Субботник 2022
@victor-homyakov
victor-homyakov / links - task scheduler in browser, or do not freeze the page.md
Last active June 26, 2022 16:46
Ссылки для презентации "Планировщик задач: не замораживаем страницу" Podlodka Frontend Crew 2021