Сообщение Re[17]: JS. Откуда такая разница в скорости? от 11.06.2024 21:24
Изменено 11.06.2024 21:39 rFLY
Re[17]: JS. Откуда такая разница в скорости?
Здравствуйте, Codealot, Вы писали:
C>Мда, ну и муть.
Почему же, просто какой-то косяк в движке. Причем связанный с обращением к статическому свойству в конструкторе через имя класса:
Я думаю если разработчикам показать этот пример, то они разберутся в чем проблема и исправят.
Ну а пока ты можешь использовать альтернативный вариант обращения к статическому методу в конструкторе:
Итоговый вариант (по сравнению с предыдущим работает в 4 раза быстрее)
C>Мда, ну и муть.
Почему же, просто какой-то косяк в движке. Причем связанный с обращением к статическому свойству в конструкторе через имя класса:
constructor()
{
this.Value = BaseClass.Counter++;
}Я думаю если разработчикам показать этот пример, то они разберутся в чем проблема и исправят.
Ну а пока ты можешь использовать альтернативный вариант обращения к статическому методу в конструкторе:
constructor()
{
this.Value = this.constructor.Counter++;
}Итоговый вариант (по сравнению с предыдущим работает в 4 раза быстрее)
4999999950000000
1: 104.80000019073486
4999999950000000
2: 101.09999990463257
class BaseClass
{
constructor()
{
this.Value = this.constructor.Counter++;
}
TestMethod()
{
return this.Value;
}
static Counter = 0;
}
var func = function()
{
var sum = 0;
for (var i = 0; i < 100_000_000; i++)
{
var obj = new BaseClass();
var val = obj.TestMethod();
sum += val;
}
console.log(sum);
};
{
var watch = performance.now();
func();
var time = performance.now() - watch;
console.log(`1: ${time}`);
}
BaseClass.Counter = 0;
{
var watch = performance.now();
let sum = 0;
for (let i = 0; i < 100_000_000; i++)
{
let obj = new BaseClass();
let val = obj.TestMethod();
sum += val;
}
console.log(sum);
var time = performance.now() - watch;
console.log(`2: ${time}`);
}Re[17]: JS. Откуда такая разница в скорости?
Здравствуйте, Codealot, Вы писали:
C>Мда, ну и муть.
Почему же, просто какой-то косяк в движке. Причем связанный с обращением к статическому свойству в конструкторе через имя класса:
Я думаю если разработчикам показать этот пример, то они разберутся в чем проблема и исправят.
Ну а пока ты можешь использовать альтернативный вариант обращения к статическому свойству в конструкторе:
Итоговый вариант (по сравнению с предыдущим работает в 4 раза быстрее)
C>Мда, ну и муть.
Почему же, просто какой-то косяк в движке. Причем связанный с обращением к статическому свойству в конструкторе через имя класса:
constructor()
{
this.Value = BaseClass.Counter++;
}Я думаю если разработчикам показать этот пример, то они разберутся в чем проблема и исправят.
Ну а пока ты можешь использовать альтернативный вариант обращения к статическому свойству в конструкторе:
constructor()
{
this.Value = this.constructor.Counter++;
}Итоговый вариант (по сравнению с предыдущим работает в 4 раза быстрее)
4999999950000000
1: 104.80000019073486
4999999950000000
2: 101.09999990463257
class BaseClass
{
constructor()
{
this.Value = this.constructor.Counter++;
}
TestMethod()
{
return this.Value;
}
static Counter = 0;
}
var func = function()
{
var sum = 0;
for (var i = 0; i < 100_000_000; i++)
{
var obj = new BaseClass();
var val = obj.TestMethod();
sum += val;
}
console.log(sum);
};
{
var watch = performance.now();
func();
var time = performance.now() - watch;
console.log(`1: ${time}`);
}
BaseClass.Counter = 0;
{
var watch = performance.now();
let sum = 0;
for (let i = 0; i < 100_000_000; i++)
{
let obj = new BaseClass();
let val = obj.TestMethod();
sum += val;
}
console.log(sum);
var time = performance.now() - watch;
console.log(`2: ${time}`);
}