LINUX.ORG.RU

Объясните за js

 , ,


1

1

Размещаю не в веб-деве потому, что вопрос касается ресурсов и производительности.

Спрашиваю потому, что понятия не имею как это правильно загуглить.

Собственно есть необходимость создавать сотни тысяч объектов данных. Варианта два — «интерактивные» (не знаю как правильнее выразиться) классы и «тупые» объекты.

Вариант первый:

function myObj(data)
{
    var _internalData = data;
    this.myMethod = function() {
        // что-то делаем с данными
        console.log(_internalData);
    }
}

var obj = new myObj({a: 1, b: 2});
obj.myMethod();

Вариант второй:

function methodForMyObj(obj)
{
    // что-то делаем с данными
    console.log(obj._internalData);
}

var obj = {_internalData: {a: 1, b: 2}};
methodForMyObj(obj);

Вопросы такие:

1) Будет ли для первого варианта «клонироваться» в памяти методы при new myObj()?
2) Как правильно замерить?
3) Есть ли различия в поведении js-движков для вышеописанного контекста?
4) Предполагаю есть еще вариант с прототипами?

З.Ы.: Сейчас используется второй вариант, и при 600к «тупых» объектов данных браузер летает. За первый вариант спрашиваю потому, что если оверхеда нет, то я бы перевел на первый ради инкапсуляции данных и разделения ответственности.

★★★★★

Последнее исправление: deep-purple (всего исправлений: 1)

Ответ на: комментарий от tailgunner

Мои адвокаты уже занимаются этим вопросом (авторских прав). Там GPL, так что нет проблем.

А ты, как всегда уныл, и не в кассу.

javaQest
()

Как же убога жс-параша, если приходится задумываться о подобных вещах. Поскорей бы приняли WebAssembly и отправили ее на свалку истории.

Deleted
()
Ответ на: комментарий от Vit

Ты имхо сильно путаешь продуцирование новых строк и оперирование имеющимися. Даже такое УГ как жс чисто структурно не станет дергать маллоки при (i in keys) или foo.bar.baz.

anonymous
()
Ответ на: комментарий от anonymous

Без поднятия. Эти тонкости лучше обсудить с местным дурачком, который не сделал ни одного проекта на js, но исправно генерит новые откровения.

Я могу сказать только то что знаю наверняка - как только в циклах появляются строковые переменные, это до «сишной» скорости не оптимизируется. Разница между «быстрым» и «не быстрым» кодом ~ в 5 раз (в принципе не так уж и плохо).

Vit ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.