Comments 25
Хотя если честно все подобные задачи имеют академический характер в 80% случаях.
Локальностью данных
При чём тут локальность данных? Это же linked list.
Если Вы посмотрите дальше связанного списка, то теоретически подобные решения могут быть использованы при работе с потоками.
Если мы говорим про Java, то за упоминание в одном предложении локальности и LinkedList
а в приличном обществе бьют канделябром. У вас объекты, составляющие linked list валяются в разных кусках tlab'ов, а какой локальности речь?! Также рекомендую написать парочку микробенчмарков и сравнить производительность ArrayList
и LinkedList
.
У вас объекты, составляющие linked list валяются в разных кусках tlab'ов, а какой локальности речь?!
Если я правильно понял предыдущего оратора, он имел в виду, что данные на которые показывает медленный указатель ещё могут быть в кеше потому, что их недавно читали.
Мне кажется последовательное чтение трёх следующих кусков вытеснит кусок, на который указывает медленный указатель, но, честно говоря не уверен. Может быть вы в курсе, как оно произойдёт на самом деле?
Конечно, нет гарантий, что данные еще в кэше первого, второго или третьего уровня, или данные еще в памяти (а не сброшены на диск) или вообще исчезли потому, что это поток сообщений из сети.
grossws, я не зацикливался на привязке Java/LinkedList, а постарался абстрагироваться и представить какие еще бывают случаи применения данного алгоритма.
Мне кажется, что если стоит такая строгая задача (Java/LinkedList), то почему бы не изменить условия и не использовать другую структуру данных с помощью которой алгоритм реализуется проще. Я понимаю, что есть спортивный интерес, а кто этот код потом поддерживать будет?
У вас объекты, составляющие linked list валяются в разных кусках tlab'ов, а какой локальности речь?!
Главное чтоб cache line тэги не конфликтовали, а там пусть лежат где угодно.
Ну по идее для честного одного прохода проще использовать очередь на N элементов. Но это в том случае когда N не большое.
График идёт вниз, потому что устал :). У меня к нему другой вопрос. Почему он так резко скакнул вверх? Что там случилось? Такое впечатление, что в игру вступил какой-то внешний фактор, который постепенно сошёл на нет. Такое поведение воспроизводится?
Нахождение 3-го элемента от конца связного списка в Java