А знаете ли вы...

Apr 15, 2012 04:00

...что сборка мусора может улучшать работу кешейПричина проста - если сборщик идёт "в глубину", то для списка он скопирует сперва "голову" списка (элемент, хранящий два указателя - на головной элемент и на хвост), потом головной элемент (прямо рядос с "головой"), потом перейдёт к хвосту списка ( Read more... )

сборка мусора, языки программирования

Leave a comment

Comments 29

otake April 15 2012, 01:12:20 UTC
Если число элементов невелико, то разница несущественна, а если велико и производительность играет роль, нужно использовать hash tables.

Reply

thesz April 15 2012, 11:17:17 UTC
Хэш-таблицы не параллельны, ибо принципиально изменяемы, это мы же вроде обсуждали.

Reply

otake April 15 2012, 13:13:57 UTC
Хэш таблицы вполне "параллельны":

http://idav.ucdavis.edu/~dfalcant/research/hashing.php
fmcad10.iaik.tugraz.at/Papers/papers/12Session11/033Laarman.pdf
http://glaros.dtc.umn.edu/gkhome/node/73
www.waset.org/journals/waset/v61/v61-5.pdf

Reply

thesz April 15 2012, 14:11:49 UTC
1. Вы сравните количество работы, необходимое для создания параллельной изменяемой структуры с количеством работы, необходимым для создания параллельной неизменяемой структуры. Во втором случае вообще ничегог делать не надо.

http://fprog.ru/2009/issue1/eugene-kirpichov-fighting-mutable-state/

2. Чтоыб понять глубину проблемы, попробуйте передать часть структуры (например, пересечение двух множеств на хеш таблицах) в параллельный поток. В случае неизменяемых структур используется разделение данных, в случае изменяемых - конструирование новой структуры.

Reply


zelych April 15 2012, 07:57:57 UTC
Вот бы он деревья ещё в van Emde Boas складывал.

Reply

thesz April 15 2012, 11:33:30 UTC
Ниже поделились ссылкой на такое исследование.

Reply


mr_aleph April 15 2012, 10:39:30 UTC
люди дальше идут и хотят из "может улучшать" сделать "должен улучшать": исследуют адаптивное размещение (например: http://dl.acm.org/citation.cfm?id=286865 )

Reply

thesz April 15 2012, 11:32:59 UTC

Leave a comment

Up