2014-04-15 7 views

risposta

8

È O(1)

È possibile verificare ciò osservando che clojure.lang.PersistentSet mantiene un campo _count nel codice sorgente di Java:

https://github.com/clojure/clojure/blob/master/src/jvm/clojure/lang/PersistentList.java

+0

Grazie per avermi indicando il posto giusto per cercare! Ora vedo l'interfaccia "Contata" che indica le prestazioni di O (1) per "contare" e che PersistentSet lo implementa. '(esempio? clojure.lang.Counted # {: a: b:: c}) => true' –

+3

Sì" Contato "è un'interfaccia utile per il controllo da verificare. Sebbene si noti che non garantisce rigorosamente * il comportamento di O (1), è necessario verificare l'effettiva implementazione della classe concreta per essere sicuri di ciò. In teoria, qualcuno potrebbe implementare 'Counted' male con O (n^2) performance o peggio .... – mikera

Problemi correlati