Сообщение Re[3]: JS. Откуда такая разница в скорости? от 09.06.2024 19:24
Изменено 09.06.2024 19:26 Pauel
Re[3]: JS. Откуда такая разница в скорости?
Здравствуйте, Codealot, Вы писали:
P>>Подозреваю. все что в гобальном скопе, вообще полностью исполняется интерпретатором
C>Зачем? И как это проверить точно?
Оборачиваете в функцию, и всё, второй блок внезапно ускоряется
P>>Подозреваю. все что в гобальном скопе, вообще полностью исполняется интерпретатором
C>Зачем? И как это проверить точно?
Оборачиваете в функцию, и всё, второй блок внезапно ускоряется
class BaseClass
{
constructor()
{
this.Value = BaseClass.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;
(function x() {
var watch = performance.now();
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 time = performance.now() - watch;
console.log(`1: ${time}`);
}) ();
Re[3]: JS. Откуда такая разница в скорости?
Здравствуйте, Codealot, Вы писали:
P>>Подозреваю. все что в гобальном скопе, вообще полностью исполняется интерпретатором
C>Зачем? И как это проверить точно?
Оборачиваете в функцию, и всё, второй блок внезапно ускоряется
Оборачиваем только второй блок
Оборачиваем всё, тот же эффект
P>>Подозреваю. все что в гобальном скопе, вообще полностью исполняется интерпретатором
C>Зачем? И как это проверить точно?
Оборачиваете в функцию, и всё, второй блок внезапно ускоряется
Оборачиваем только второй блок
class BaseClass
{
constructor()
{
this.Value = BaseClass.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;
(function x() {
var watch = performance.now();
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 time = performance.now() - watch;
console.log(`1: ${time}`);
}) ();
Оборачиваем всё, тот же эффект
(function x() {class BaseClass
{
constructor()
{
this.Value = BaseClass.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();
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 time = performance.now() - watch;
console.log(`1: ${time}`);
}) ();