Удивительное рядом - знание JCF (original) (raw)

Previous Entry Flag Next Entry

Удивительное рядом - знание JCF

1. Все мы знаем из javadoc, что ArrayList сделан на базе массива, а LinkedList на базе списка, т.е.
в ArrayList доступ к произвольному элементу - константа, но добавление требует пересоздание массива,
а у LinkedList добавление константа т.к. просто добавить элемент к списку.

Это очевидно.

Наткнулся на статью: http://www.briandupreez.net/2010/05/arraylist-vs-linkedlist.html

Добавил разогрев к примеру автора и тем не менее: простое добавление в изначально пустые списки:

грею 30000 итераций каждый, результат:
ArrayList: 662 ms, size = 20000000
LinkedList: 7238 ms, size = 20000000

Вот тебе и LinkedList!

PS: чтобы пресечь нездоровый ажиотаж (очевидно если прочитать или задуматься):
если изменить в примере list.add(bob) на list.add(0, bob) LinkedList оправдывает своё назначение (количество итераций пришлось драматически уменьшить)
ArrayList: 20738 ms, size = 200000
LinkedList: 22 ms, size = 200000

2. Hashtable vs HashMap
http://www.briandupreez.net/2010/05/hashtable-vs-hashmap.html

Субъективно Hashtable медленнее из-за синхронизации.
Но результат иной.