Ostatnio natrafiłem na materiał wideo porównujący kolekcje w
językach Java, Scala i z użyciem biblioteki przygotowanej przez
developerów firmy Goldman Sachs. Z ciekawości utowrzyłem podobny
kod w Clojure by porównać wyniki. I muszę powiedzieć, że są
trochę zaskakujące.
W materiale tym porównywana była wydajność kolekcji dla 1
miliona elementów. Postanowiłem utrudnić trochę i dodać 1 zero.
Wyniki są podyktowane cechami mojego PC, na innych komputerach będą
się różnić, być może znacznie.
Tutaj źródło:
http://www.infoq.com/presentations/java-streams-scala-parallel-collections
"The Grid. A digital frontier. I tried to picture clusters of information as they move through the computer. What did they look like? Ships? Motorcycles? Were the circuits like freeways? I kept dreaming of a world I thought I’d never see. And then, one day, I got in." — Tron: Legacy
2014-07-27
2014-07-06
Java vs Clojure : Singleton
Luźna definicja: singleton to obiekt,
który posiada tylko jedną instancję w aplikacji. Zwykle stosowany
jaki kontener dla konfiguracji. Dlaczego jedna instancja? Ano
dlatego, by spróbować uniknąć niespójności związanych z tym,
że różne obiekty posiadają nieaktualne informacje dot. wartości
w nim przechowywanych np. poprzez przekazywanie obiektu konfiguracji przez parametr. Dodatkowy problem stanowią próby
aktualizacji wartości Singletona tak, by przy odczycie w innym
miejscu programu dostać je spójne, a nie zaktualizowane częściowo.
Pusty Singleton w Java:
public
enum MySingleton {
INSTANCE;
}
W Clojure wartości obiektów można
zmieniać tylko w trnsakcji. Najprostszą konstrukcją zapewniającą
funkcjonalność Singletona jest atom.
Pusty atom w Clojure:
(def
MySingleton (atom nil))
Subskrybuj:
Posty (Atom)