Javascript-форум (https://javascript.ru/forum/)
-   Node.JS (https://javascript.ru/forum/node-js-io-js/)
-   -   Несколько тысяч объектов и оперативная память (https://javascript.ru/forum/node-js-io-js/75995-neskolko-tysyach-obektov-i-operativnaya-pamyat.html)

yinfo 23.11.2018 12:30

Несколько тысяч объектов и оперативная память
 
Простенький объект Session, который хранит ID, ссылку на активное socket-соединение и, например, время последнего обращения.
Что-то такое : {ID, socket, lastTime}

Было бы логично прямо в этом объекте добавить несколько методов (например 100-200 строк кода). Но не будет ли это затратным с точки зрения использования ресурсов сервера? Если этих объектов будет несколько сотен или тысяч.

Или правильнее создать отдельный модуль для работы с этим объектом, а в самом объекте только данные.

j0hnik 23.11.2018 12:33

но совсем понятно что точно хотите, но методы лучше хранить на прототипе.

yinfo 23.11.2018 12:46

Цитата:

Сообщение от j0hnik (Сообщение 499212)
но совсем понятно что точно хотите, но методы лучше хранить на прототипе.

Переформулирую.
Проектирую объект, который будет существовать в большом количестве экземпляров. Не будет ли полезным и целесообразным вынести код из него в отдельный модуль в целях оптимизации...

j0hnik 23.11.2018 12:51

Вынести код из объекта?
глянуть пример можно, что за объект и что хотите выносить

Nexus 23.11.2018 12:52

yinfo, вы буквально объект хотите использовать или все же класс?
Если это будет класс, то можно создавать любое кол-во методов, они не будут дублироваться в памяти для каждого экземпляра.

yinfo 23.11.2018 12:55

Цитата:

Сообщение от Nexus (Сообщение 499216)
yinfo, вы буквально объект хотите использовать или все же класс?
Если это будет класс, то можно создавать любое кол-во методов, они не будут дублироваться в памяти для каждого экземпляра.

Именно класс.
module.exports = class SocketSession {
    constructor(socket, sessionId, user) {
        this.sessionId = sessionId
        this.socket = socket
        this.user = user
    }
}


"они не будут дублироваться в памяти для каждого экземпляра" - собственно это я и хотел услышать, спасибо.

SuperZen 23.11.2018 13:30

А почему class es6, а экспорт es5? )

yinfo 23.11.2018 13:53

Цитата:

Сообщение от SuperZen (Сообщение 499221)
А почему class es6, а экспорт es5? )

Спасибо за замечание )

yinfo 26.11.2018 10:36

Цитата:

Сообщение от SuperZen (Сообщение 499221)
А почему class es6, а экспорт es5? )

И главным образом из-за

export class SocketSession {
^^^^^^

SyntaxError: Unexpected token export

Хотя в настройках Webstorm указан ES6

SuperZen 26.11.2018 13:22

нужен babel с каким-нибудь пресетом ) типа es2015, stage-0 и т.д.


Часовой пояс GMT +3, время: 05:14.