Vector-of in clojure - это способ выполнения операций, поскольку внутренние значения распаковываются. Я могу создать такой массив:эффективный способ инициализации большого вектора в clojure
(time (count (apply vector-of :double (repeat 100000 0))));
; "Elapsed time: 1703.597 msecs"
Но это очень медленно. Есть ли более быстрый способ (должен быть)? Примечание: преассоляция вектора важна для связывания, так как ассоциатор будет генерировать ошибку вне пределов, если он пытается установить элемент за пределы длины вектора.
Edit:
Это имеет решение сейчас (см ответ). Леон Грапентин опубликовал это как ошибку на github here.
Видимо VARIADIC перегрузка 'вектора -of' не оптимизирован для большого ввода. Я создал проблему об этом здесь http://dev.clojure.org/jira/browse/CLJ-1695 –
FYI теперь исправлено на главном https://github.com/clojure/clojure/commit/bcb8e9a7aa0b0588b4872384256d86bf53d12f15 –