|
|
|
V8 и for(... in ...)
|
|||
|---|---|---|---|
|
#18+
Насколько быстро в V8 (Node.js) выполняется операция for(index in array), если в этот массив часто добавляются новые элементы и удаляются периодически из середины? В каком формате V8 хранит такой массив? По-любому ведь вся память не занимается уже удалёнными элементами (после прохода сборщика мусора). Там используются списки? То есть вопрос в том, стоит ли изобретать велосипед и делать двусвязный список и руками удалять элементы, или можно понадеяться, что for(... in ...) не будет уступать в скорости обходу элементов двусвязного списка? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2012, 21:27 |
|
||
|
V8 и for(... in ...)
|
|||
|---|---|---|---|
|
#18+
Шогал, руками это push/shift pop/unshift? вы не сможете работать с массивом быстрее, чем работает сам язык. вообще, на больших объемах надо избегать ассоциативных массивов и использовать обычный прямой цикл с кешированием for( var i= 0, l = a.length; i < l; i++){var item = a[i];}, который где-то на порядок быстрее for-in если у вас бешеное кол-во данных, можно посмотреть в сторону всяких алгоритмов правильного хранения данных в памяти, красные/черные деревья и прочее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2012, 14:10 |
|
||
|
V8 и for(... in ...)
|
|||
|---|---|---|---|
|
#18+
Нет, руками имел ввиду типа того: Код: javascript 1. 2. 3. Добавляем соответственно очень просто: Код: javascript 1. 2. 3. 4. 5. Удаляем: Код: javascript 1. 2. 3. 4. 5. Будет ли подобная структура быстрее ассоциативных массивов? Накладные расходы на два указателя в каждом элементе некритичны. (разумеется, это не конечный код, а просто набросал пример, в конечном варианте ещё нужно предусмотреть, если список пустой и т.п.) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2012, 15:42 |
|
||
|
V8 и for(... in ...)
|
|||
|---|---|---|---|
|
#18+
Шогал, Ну это легко проверить, берете свою структуру, наполняете её рандомными данными, и теми же данными массив, берете новую дату, запускаете 1000 пробегов по вашей структуре, берете дату вычитаете из взятой первую, получаете время. То же самое делаете с for-in, сравниваете. Иногда результаты удивляют. Еще интересно в разных браузерах посмотреть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2012, 01:15 |
|
||
|
|

start [/forum/topic.php?fid=22&msg=38064320&tid=1449016]: |
0ms |
get settings: |
5ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
148ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
27ms |
get tp. blocked users: |
1ms |
| others: | 204ms |
| total: | 407ms |

| 0 / 0 |
