@nodejs_ru

Страница 141 из 2748
Vladimir
18.08.2016
01:32:45
формально - массив это просто объект

Paul
18.08.2016
01:32:53
https://gist.github.com/DmitrySoshnikov/593e19f60df257f2119fad2e0431b617

Vladimir
18.08.2016
01:33:35
такое на прокси надо делать

Google
KlonD90
18.08.2016
07:48:04
Map что-то грустный. Есть ли структура с быстрым удалением по середине?

Vladimir
18.08.2016
07:57:51
формально - массив это просто объект
Без гарантированной сортировки свойств

Дмитрий
18.08.2016
07:58:59
KlonD90
18.08.2016
08:01:16
И?

Чем оно быстрее /лучше?

Никита
18.08.2016
08:46:54
Чем оно быстрее /лучше?
Из мапов можно удалять элементы.

В них ключами могут быть не только строки.

KlonD90
18.08.2016
08:47:45
Из мапов можно удалять элементы.
не не ( я про задавайте свои ответы)

Никита
18.08.2016
08:48:04
а?

KlonD90
18.08.2016
08:48:08
про Map я знаю - проверял - не подходит. Слишком медленна реализация

возможно стоит написать конечно свой Map

с нужной мне балансировкой

Google
Ярослав
18.08.2016
08:52:42
а что тебе нужно?

KlonD90
18.08.2016
08:58:34
Быстрое удаление из середины(хотя скорее будет ближе к началу)

hamper ?
18.08.2016
09:06:15
А чем объекты плохи? В них удаленные элементы память не занимают же.

KlonD90
18.08.2016
09:06:46
паммять не занимают - но деоптимизируют

ну и на самом деле и то и другое при удаление конечно только помечается к гц на расмотрение. ну вообщем-то можно и объекты использовать, но удалять с середины все равно нужно перемещения делать O(n/2) раз в ближайшую сторону

Amon Bower
18.08.2016
09:09:47
Люди, такой вопрос

Я писал игру простенькую на ноде (на сокетах). И игроков хранил в массиве с их данными позиций Х и Y

но когда добавляется 1-2 юзера, память засорялась

такие данные надо хранить онли в бд?

KlonD90
18.08.2016
09:13:27
Какие перемещения? Объекты это хеш структура же
а ты всегда хочешь читать не существующие проперти? или какие-то есть другие ухищрения?

Amon Bower
18.08.2016
09:13:42
в файлах

KlonD90
18.08.2016
09:14:52
new Object(null)
я про задачу удалить из середины массива

Anton
18.08.2016
09:15:16
Сделать свой HashMap. Сделать свои деревья поиска. Сделать свой deque

hamper ?
18.08.2016
09:15:32
Ярослав
18.08.2016
09:16:05
Сделать свой HashMap. Сделать свои деревья поиска. Сделать свой deque
а то тут недавно кто-то жаловался, что алгоритмических структур не хватает

Anton
18.08.2016
09:16:18
Я и жаловался :P

Google
hamper ?
18.08.2016
09:16:29
вообще от задачи все зависит

splice
он дороговат в плане скорости работы

Ярослав
18.08.2016
09:16:45
x = {1: 3, 2: 6, 6:7}; delete x[2]
так-то это не массив

KlonD90
18.08.2016
09:16:50
Я писал игру простенькую на ноде (на сокетах). И игроков хранил в массиве с их данными позиций Х и Y
ну вообще можешь и так делать но если хочешь чтобы было многопользовательской эта история то наверное стоит переделать на какое-нибудь хранилище которое будет работать и с другими тредами

マイク
18.08.2016
09:16:54
он дороговат в плане скорости работы
про это ничего в постановке задачи нет

KlonD90
18.08.2016
09:17:07
x = {1: 3, 2: 6, 6:7}; delete x[2]
ну delete же деоптимизирует и все становится грустно тут же

hamper ?
18.08.2016
09:18:07
Куда деоптимизирует? элементы и так хранятся по хешам а не по ключам

Yan?
18.08.2016
09:18:46
по-моему splice самый адекватный метод

hamper ?
18.08.2016
09:19:09
если скорость не важна и нужны именно массивы то да

Danila
18.08.2016
09:19:26
чуваки, а за вопрос по mysql в этом чатике меня не побьют? в качестве оправдания могу сказать, что использую его в node.js =)

KlonD90
18.08.2016
09:19:45
Куда деоптимизирует? элементы и так хранятся по хешам а не по ключам
а ты пытался использовать или читал про деоптимизацию? или там уже поменялась деоптимизация такого кода?

hamper ?
18.08.2016
09:20:58
а ты пытался использовать или читал про деоптимизацию? или там уже поменялась деоптимизация такого кода?
ну я объекты в качестве кеша иногда использую, вроде ни по памяти ни по скорости просадки со временем не знамечал, при это сервис по 5к запросов в секунду нормально обрабатывал в течении нескольких месяцев

KlonD90
18.08.2016
09:21:25
https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#52-the-object-being-iterated-is-not-a-simple-enumerable

Никита
18.08.2016
09:22:36
И всё-таки, где вы наблюдали проблемы по скорости у Map?

На свежих версиях.

Гонять туда-сюда объекты с двумя фиксированными полями — объекты быстрее

хранить-добавлять-удалять кучу всего надолго — мапы быстрее

Ну, в тех тестах, что я видел.

Google
hamper ?
18.08.2016
09:24:09
https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#52-the-object-being-iterated-is-not-a-simple-enumerable
а да, про это читал, но реальной просадки не видел ни разу, видимо это когда по 100к операций в секунду выполняешь будет только заметно

у меня обычно есть в коде намного более медленные операции что бы на скорость хеш таблиц внимание обращать

KlonD90
18.08.2016
09:27:47
это как раз про массив. map замедляется явно со временем у меня типа есть id request’а же и я его посылаю типа по 5к за раз элементов по сути в мапе создаю дальше удаляю как приходит ответ по сути. со временем спустя миллион наверное удалений оно замедляется

есть подозрение что все таки пока гц не постучит в ворота хранится там какая-то таблица просто с пометками к удалению

надо будет изучить поподробнее как работает удаление. я подозреваю что в моем конкретном случае можно сделать собственный map шустрый и веселый

hamper ?
18.08.2016
09:30:16
WeakMap шустрее мапа но в нем нельзя получить список всех элементов

KlonD90
18.08.2016
09:30:33
спасибо - надо будет попробовать

Vladimir
18.08.2016
09:31:34
x = {1: 3, 2: 6, 6:7}; delete x[2]
бум, и код неоптимизируемый

Admin
ERROR: S client not available

hamper ?
18.08.2016
09:32:48
бум, и код неоптимизируемый
да, но на сколько часто ты в реальных проектах встречал заметное влияние от этого? я вот раньше тоже и for .. in .. избегал потому что он не оптимизируемый, потом просто забил на это и не заметил разницы

KlonD90
18.08.2016
09:33:05
ну не код, а именно эта структура. там если больше 1ой тысячи элементов что ли оно проваливается в hash table mode

hamper ?
18.08.2016
09:34:48
у меня там больше 1000 элементов, деркается она по несколько тысяч раз в секунду, раз в несколько минут перебирается полностью и вычищаются элементы с истекшим ttl, просадки в скорости не замечал

KlonD90
18.08.2016
09:36:19
ну попробуй сравнить с другими решениями

просто это может быть не узким местом - но не факт что самым быстрым решением

hamper ?
18.08.2016
09:36:41
если что то надо прямо совсем оптимизировать то мне проще это на го переписать... он в некоторых местах оптимальнее работает

просто это может быть не узким местом - но не факт что самым быстрым решением
ну если есть узкие места то надо в первую очередь на них смотреть и оптимизировать а не на то, что не идеально оптимизировано

hamper ?
18.08.2016
09:38:59
почему просто не сделать копию объекта без удаляемого ключа? быстро и оптимизируемо
если элементов много то копирование это крайне медленная операция

KlonD90
18.08.2016
09:44:51
ну если есть узкие места то надо в первую очередь на них смотреть и оптимизировать а не на то, что не идеально оптимизировано
я спорить на этот счет не буду. у меня вот эта штука теперь является узким местом, хотя пока думаю что хватит какого-нибудь https://github.com/Salakar/denque потому как ну почти всегда нужный элемент сначала находится

почему просто не сделать копию объекта без удаляемого ключа? быстро и оптимизируемо
как вариант если ключей мало, ну потому как если это операция даже относительно долгая то обычно количество ридов больше и важнее, а если много то смысла нет все равно он деоптимизирован

Google
Vladimir
18.08.2016
09:55:51
@klond90 тебе нужен кастомный hashtable, без вариантов

Будет за O(1) все

KlonD90
18.08.2016
09:56:42
Как пример что взять?

Vladimir
18.08.2016
10:00:06
Речь ведь все ещё про тарантул?

KlonD90
18.08.2016
10:00:39
да да я все еще не разогнал ту очередь но нашел инетресный вариант

Vladimir
18.08.2016
10:02:05
Смотри, берёшь массив фиксированной длины N

Из предположения, что число исходящих запросов в нормальных ситуациях будет <N

В качестве хэша берёшь %N

В каждой ячейке массива - голова односвязного списка

KlonD90
18.08.2016
10:06:40
да я что-то такое продумывал надо посмотреть. 10кратный прирост может быть спокойно на длинной очереди

Vladimir
18.08.2016
10:07:05
Прирост чего?

KlonD90
18.08.2016
10:08:59
поиска/удаления

Vladimir
18.08.2016
10:09:54
Ну вопрос, насколько это повлияет на общую производительность

KlonD90
18.08.2016
10:12:04
оно начинает быть узким местом когда по 5к запросов за раз уходит

Никита
18.08.2016
10:33:35
@vkurchatkin предложил им явно ничего не ломающий метод: https://github.com/gulpjs/gulp/issues/1640#issuecomment-240683358

Если уж и это ему не понравится, то я даже не знаю.

*забыл запятую, в смысле это я обращаюсь к @vkurchatkin и я предложил

Что думаешь?

Ҫѐҏӗѫӑ
18.08.2016
10:45:49
парни, я иногда пропускаю много тут. речь о том, что gulp тормозит ноду из-за vinyl-fs, который поломается (в ноджс 7?), я правильно понимаю??

Damir
18.08.2016
10:49:54
/лучше

Страница 141 из 2748