Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
console.time('first test');
тестируемый код
console.timeEnd('first test');const start = process.hrtime();
// do op
const end = process.hrtime(start);
console.info("Время исполнения (hr): %ds %dms", end[0], end[1]/1000000);var a внутри цикла for — постоянное переобъявление переменной, используйте let если нужно ограничить scope, или объявите до циклаИли ты сам разрабатываешь такую библиотеку, и тогда подобные советы у тебя вызывают только недоумении «как этого можно не знать».Давайте без лишнего пафоса. Можно писать библиотеку или некую логику, которая будет вызываться и чаще чем миллион раз, и не знать таких вещей. В конце концов, когда говорят об экономии на спичках, обычно упоминают об этом, а не об new `Object vs {}`.
new Function(..).function find(val){
function index (value) {
return [1, 2, 3].indexOf(value);
}
return index(val);
}
8.29% 67 | LazyCompile:*InnerArrayIndexOf native array.js:1020
* 7.67% 62 | v8::internal::JSFunction::set_literals
* 7.05% 57 | v8::internal::Factory::NewFunctionFromSharedFunctionInfo
* 5.81% 47 | v8::internal::Factory::NewFunction
* 4.58% 37 | v8::internal::Factory::New<v8::internal::JSFunction
* 4.33% 35 | v8::internal::Runtime_NewClosure
4.21% 34 | Stub:FastCloneShallowArrayStub
4.08% 33 | v8::internal::Heap::AllocateRaw
3.34% 27 | LazyCompile:~index test.js:2
* 3.34% 27 | v8::internal::Factory::NewFunctionFromSharedFunctionInfo
3.34% 27 | Builtin:ArgumentsAdaptorTrampoline
3.09% 25 | v8::internal::Heap::Allocate
* 3.09% 25 | v8::internal::SharedFunctionInfo::SearchOptimizedCodeMap
function foo() {
return [1, 2, 3];
}
function find(val){
function index (value) {
return foo().indexOf(value);
}
return index(val);
}
13.58% 58 | LazyCompile:*InnerArrayIndexOf native array.js:1020
9.82% 42 | Builtin:ArgumentsAdaptorTrampoline
7.49% 32 | LazyCompile:~index test1.js:6
7.01% 30 | LoadIC:A load IC from the snapshot
* 6.08% 26 | Stub:FastNewClosureStub
5.62% 24 | Builtin:CallFunction_ReceiverIsNullOrUndefined
3.74% 16 | LazyCompile:*foo test1.js:1
3.51% 15 | Builtin:Call_ReceiverIsNullOrUndefined
3.51% 15 | LazyCompile:*indexOf native array.js:1065
FastNewClosureStub. Вот отсюда и основная разница.
Тонкости Javascript/Node.js. Увеличиваем производительность в десятки раз