poniedziałek, listopada 09, 2009

32 bity vs. 64 bity, tym razem C++ ;-)

Taka 32/64 bitowa ciekawostka ;-) całkowanie numeryczne w 64 bitowej Java'ie było szybsze niż w 32 bitowej, ale już dla kodu natywnego wyprodukowanego przez kompilator C++ wyniki są odwrotne.

W ramach walki z Nowym Gadaczem, a dokładniej zabawą z tym by mógł równie dobrze pracować w 32 bitowej Java'ie jak i 64 bitowej [ręki nie dam, ale na 99% jedyny raz gdy był uruchomiony w 64 bitach to było wtedy gdy sam sprawdzałem ;-)], a nie może z racji tego, że wykorzystuje do komunikacji po DDE natywny kod w JNI skompilowany dla 32 bitów, próbuję zrobić jego wersję 64 bitową. W tym celu używam Visual C++ 2008 Express Edition [wersja 32 bitowa powstała w Dev-C++], które przy pomocy pewnej sztuczki używa 64 bitowego kompilatora z Windows 7 SDK.
I właśnie ten 64 bitowy kompilator postanowiłem wykorzystać dla testów.

Jest to o tyle uzasadnione, że mamy tu do czynienia z "tym samym" kompilatorem, który produkuje raz kod 32 bitowy, a drugim razem 64 bitowy.
Więc różnice w prędkości wykonania "powinny" zależeć tylko od bitowości ;-)
No i wyniki są takie [przypomnę, że wynikiem jest czas w którym wykonano 1 całkowanie w 10 tysiącach kroków w przedziale <-10,10) z funkcji f(x)=e-x2 [do znudzenia to tu piszę ;-)]]:

32 bit 0,985 ms
64 bit 1,387 ms

Czyli kod 32 bitowy jest o prawie 30% szybszy!
Oczywiście w tym akurat zastosowaniu, bo już możliwe że w innych będzie dokładnie na odwrót. Nie wolno zapomnieć też, o tym że sam kompilator może mieć w sobie pewne założenia, które przyśpieszały kod na 32 bitach, a na 64 bitach tego nie powodują.
Najsprawiedliwiej byłoby porównać wyniki uzyskane w kodzie assemblerowym, ale ze wstydem przyznaje, że próbowałem coś przed chwilą w assemblerze napisać i już nic nie pamiętam z tego jak się pracuje z koprocesorem :-)


Podobne postybeta
Java 32 bit vs. Java 64 bit
A JavaScript i tak szybszy ;-)
Sarkania na C++
Język Go dla Windows :-)
C# miewa swoje plusy ;-)

niedziela, listopada 08, 2009

Jakich systemów używa się na biurkach? Albo chociaż do pracy z OpenOffice.org2GoogleDocs? :-)

Jest "zabawa" ;-)Od paru dni zbieram statystyki tego jakich systemów używają użytkownicy OpenOffice.org2GoogleDocs i chciałbym wykorzystać to do zrobienia małego eksperymentu ;-)Chciałbym byście spróbowali zgadnąć wielkości tych udziałów i podzielili się ze mną waszymi wnioskami.Do tego posłużyć wam może ten oto formularz [link dla osób, które działają przez RSSa i nie widzą formularza]Ciekaw jestem tego czy wyniki uzyskane tymi dwoma sposobami, czyli ankietą i zbieraniem statystyk w trakcie updatowania OOo2GD, będą podobne.Jeśli można starajcie się by suma waszych "głosów" nie była większa niż 100% ;-) w takim przypadku zastosuje metodę w której znormalizuje wszystkie wyniki tak by ich suma była równa 100.


Podobne postybeta
Jak oceniasz swoje bezpieczeństwo? - podsumowanie
Jak zakitrać tabki ;-) - czyli o tym jak rozszerzeniem do Chrome można walczyć z makabryczną ilością tabek w przeglądarce ;-)
Drogie Google, gdzie jest mój Nexus 7? ;-)
Przeszacowany Linux, Niedoszacowany Windows i Ukryty MacOS ;-) czyli o tym na jakich systemach używa się głównie OOo2GD
Java, .NET czy może ktoś jeszcze? ;-)

sobota, listopada 07, 2009

Java 32 bit vs. Java 64 bit

Ciekawe rzeczy wychodzą gdy porówna się 32 bitową i 64 bitową Java'e.

Test był prosty, operacja na listach i mapach, tak wyglądała ich deklaracja:
  List list = new ArrayList();
ArrayList aList = new ArrayList();
Map map = new HashMap();
HashMap hMap = new HashMap();

Test na listach składał się z 200 tysięcy dodań do listy stringa [stworzonego wg. mechanizmu "a" [lub "l"] + liczby od 0 do 199999], następnie przeiterowanie tak stworzonej listy i w końcu wykasowanie elementów na podstawie stringa, który posłużył do ich stworzenia.

Dla 32 bitów wygląda to tak [czasy podane są dla wykonania 200 tysięcy operacji danego typu plus pewien narzut na pętlę]:
List:add 196.33 ms
List:iterate 11.33 ms
List:remove 3.67 ms
ArrayList:add 126.33 ms
ArrayList:iterate 9 ms
ArrayList:remove 3.67 ms


Dla 64 bitów zaś tak:
List:add 164 ms
List:iterate 22 ms
List:remove 10.33 ms
ArrayList:add 94 ms
ArrayList:iterate 15.33 ms
ArrayList:remove 9.33 ms

Jak widać dodawanie jest najszybsze w przypadku bezpośredniego użycia ArrayList w 64 bitowej Java'ie, wtedy dodanie 200 tysięcy stringów zajmuje tylko 94 ms, najwolniejsze jest zaś dodanie takiej samej listy stringów do ArrayList widzianej jako List w 32 bitach.
Ale już iterowanie przez listę jest w 64 bitach prawie 2 razy wolniejsze niż w 32 bitowej Java'ie!
Kasowanie zaś jest w 64 bitach wolniejsze o 2.5-3 razy niż w 32 bitach.

Przy okazji widać też, że operowanie na listach z użyciem zmiennych typu ArrayList jest szybsze niż gdy zmienne są bardziej ogólne i są typu List.

W przypadku operacji na mapach wyniki dla 32 bitów wyglądają tak:
Map:put 380 ms
Map:iterate 13.67
Map:remove 77.67
HashMap:put 301.67 ms
HashMap:iterate 12.33 ms
HashMap:remove 80.67 ms

Dla 64 bitów zaś tak:
Map:put 485 ms
Map:iterate 33.67
Map:remove 105.33
HashMap:put 243 ms
HashMap:iterate 25.33 ms
HashMap:remove 103.33 ms

Tutaj już 32 bity okazują się dużo szybsze we wszystkich operacjach.

Dodatkowo uruchomiłem w 32 bitach i 64 bitach program do generowania listy podobnych postów dla tego bloga i okazało się, że tutaj wersja 64 bitowa w dość złożonym problemie analizy podobieństwa postów potrzebowała na tą analizę 29 sekund, a wersja 32 bitowa 32 sekund, czyli różnica prędkości wyniosła około 10% na korzyść 64 bitów.

Także w opisywanych już przeze mnie tu testach z całkowaniem numerycznym Java 64 bitowa okazała się być szybsza od 32 bitowej.
Wyniki przedstawiały się w tym teście następująco:
Java 32bit - 4.7 ms
Java 64bit - 3.8 ms
Czyli 64 bitowa Java szybsza była o jakieś 20-25% od 32 bitowej.

Kolejnym testem było uruchomienie opisywanego tu też kiedyś przeze mnie kodu który renderuje twarz 3D używając cieniowania Gourauda.
I tutaj też 64 bity były szybsze.

Obliczenie jednej klatki zajęło:
Java 32bit 2.03 ms
Java 64bit 1.30 ms

Stworzenie obrazka na podstawie mapy bitowej zajęło:
Java 32bit 4.09 ms
Java 64bit 3.3 ms

Czyli różnica w przypadku obliczeń wyniosła ponad 56%, a w przypadku tworzenia obrazka 24% na korzyść Java'y 64 bitowej.

Myślę, że można więc powiedzieć, że 64 bitowa Java jest jednak szybsza ;-)

Do testów użyłem Sun Java 1.6.0_16 w wersji 32 bitowe i 64 bitowej, wszystko na 64 bitowym Windows 7.


Podobne postybeta
32 bity vs. 64 bity, tym razem C++ ;-)
A JavaScript i tak szybszy ;-)
Nie inicjalizuj rozmiaru kolekcji...
LinkedList w Java'ie to taki miś koala...
OpenOffice.org2GoogleDocs na Apple - pierwsze podejście ;-)

Polacy - naród paserów? ;-)

Taka ciekawostka, gdy kościół dostaje od państwa w ramach zadośćuczynienia ziemię, którą później sprzedaje po wyższej cenie niż była wyceniona, zawsze nazywa się to oddawaniem ziemi zrabowanej przez komunistów.
Gdy wnuk, czy prawnuk jakiegoś ziemianina czy fabrykanta dostaje dwór czy coś podobnego to też nazywa się oddawaniem rzeczy zagrabionych przez komunistów.

I jak to się często podkreśla cały naród musi płacić za grabieże komunistów.

Tak wygląda opanowywanie języka, wszyscy godzimy się na takie nazywanie sprawy.

Jest tylko jedno ale, może i to komuniści grabili, ale beneficjentami tych grabieży była większość ludzi zamieszkujących Polskę.

Setki tysięcy czy miliony chłopów mają darowane przez PRL gospodarstwa, a to darowanie nastąpiło właśnie z tej zagrabionej ziemi.

Wszyscy chodzili do szkół, z których wiele, szczególnie na wsiach pobudowane zostało w dawnych, zrabowanych dworach.

W PRLu wiele osób korzystało z wczasów w FWP - Funduszu Wczasów Pracowniczych, którego ośrodki często były umieszczane w wcześniej zrabowanych budynkach.

A osiedla czy szpitale pobudowane w PRLu? Też często na zrabowanej ziemi.

Wychodzi na to kochani, że może i komuniści zrabowali, ale to my jako naród jesteśmy paserami ;-)


Podobne postybeta
"Herbatka"
Kaczyński zniósł demokrację
Dart - się mnie podoba :-)
Android i lokalizacja. Czego używać zagranicą?
Jak wnuk za babcię płaci ;-)

Galileoskop jest już tuż tuż ;-)

Na stronie z najnowszymi informacjami dotyczącymi Galileoskopu piszą, że galileoskopy są już tuż tuż ;-)
Wg. tej informacji mają przypłynąć do Europy 13 listopada i od wtedy będą dystrybuowane :-)
Zakładam, że odprawa i dotarcie ich do dystrybutora to jakieś 2-3 dni, czyli pewnie koło 18 listopada [więcej dni, bo przecież 13 to piątek] zaczną wysyłać :-) Więc jak dobrze pójdzie koło połowy grudnia powinny dotrzeć w końcu moje 2 galileoskopy :-)
I to jest super :-)


Podobne postybeta
Galileoskopy w Polsce
Galileoskop :-)
Galileoskop
Galileoskop złożony ;-)
Gwiazdka tuż, tuż ;-)

Przybijające cosie.......

Oglądam ostatnio Buffy na DVD, kupiłem sobie 7 sezonów na Amazon.co.uk, za całe 69 funtów plus transport, co łączne kosztowało mnie 420 złotych.
Dla porównania w Polsce wydano 2 sezony BtVS [ktoś kiedyś słyszał o trzecim] i jedno wydanie kosztowało od 150 do 200 złotych.... czyli u nas 7 wydań kosztowałoby od 1050 do 1400 złotych.......
W wersji zachodnioeuropejskiej na płytach jest masa dodatków, a to komentarze do odcinka w postaci ścieżki dźwiękowej gdzie twórcy komentują odcinek, a to scenariusze, zdjęcia, teledyski, trailery czy "making of" i podobne.
Na Polskiej nie ma nic. Są tylko same odcinki i polskie "tłumaczenie" oraz polska "ścieżka dźwiękowa". Kompletne zero dodatków. Jakość tłumaczenia też pozostawia wiele do życzenia.
W przypadku polskich płyt z Buffy najlepiej oglądać z oryginalną ścieżką dźwiękową i angielskimi napisami [też są lepsze niż polskie] po to żeby czasem jak się czegoś nie zrozumie z mowy to załapać z napisów.
Przy zachodnioeuropejskich taka metoda oglądania wydaje się być równie sensowna ;-)

Albo popatrzcie na książki. Chcąc przeczytać ostatnią książkę jednego z najpopularniejszych i największych autorów SF musiałem sobie ją zamówić z tegoż samego Amazon.co.uk, wcześniej przewspaniała K musiała mi inną książkę tego samego autora przysłać z UK.... Mówię tutaj o Arthurze C. Clarke'u, twórcy między innymi Odysei Kosmicznej 2001 - klasyki gatunku!
A jego ostatnia książka - The Last Theorem pewnie nigdy nie będzie wydana w Polsce...
Ostatnie wydawnictwo, które próbowało wydawać ACC, korzystając z tego, że po jego śmierci powinno wzrosnąć zainteresowanie jego książkami chyba nie wyszło na tym najlepiej, bo do teraz mają wszystkie wydane przez siebie książki ACC w ofercie i to w naprawdę niskich cenach - sprawdźcie.

Albo znów książki Richarda Dawkinsa, człowiek który jest chyba teraz najpoczytniejszym autorem książek popularno-naukowych traktujących o ewolucji, a my mamy rok Darwinowski, i co? I jedna z jego najważniejszych książek Ślepy Zegarmistrz wydana była w Polsce ostatni raz 10 albo więcej lat temu. Na Allegro cena tej książki sięga 100 złotych i wyżej.
Kupno nowej jest możliwe, jeśli nie przeszkadza Ci, że jest po angielsku, znów Amazon.co.uk.

Albo The Wisdom of Crowds. Ktoś to kiedyś w Polsce wyda???

Jesteśmy zaściankiem Europy, i nikt nas tam nie spychał, sami się zepchnęliśmy.
Wyznaczniki stylu i tego jak patrzeć na świat dyktują jakieś konserwatywno-puszczalskie celebrytki i celebryci. Narodowy serial to M jak Miłość w którym niekonsekwentne podejście do spraw wierności i przyzwoitości przemieszane jest z prostackim konserwatyzmem.

Albo nasze "opiniotwórcze" media, które "odkrywają" wielką aferę z prokuratorem zamieszanym w porwanie Olewnika... sęk w tym, że odkrywają to 1.5 roku po tym gdy pisało o tym NIE, ale NIE jest złe bo Urban jest zły.

Inna sprawa, OOo2GD pobrało już wiele osób [nieraz się tu chwaliłem ile ;-)] i z tego co pamiętam NIGDY nikt nie napisał do mnie niczego w stylu "głupi ch** to gówno nie działa", a używają tego ludzie od Chin i Japonio do USA. A u nas? W przypadku Gadacza i Nowego Gadacza co jakiś czas dostaję takie wiadomości.
OK, wiem OpenOffice.org ma mniejszy odsetek kretynów wśród użytkowników niż Gadu-Gadu, ale jest tu też chyba jakiś czynnik kulturowy.

Trochę to takie przybijające nie sądzicie? ;-)

Podobne postybeta
A tak sobie ;-)
Książki które zmieniły moje życie
7 sezonów Buffy na DVD
Demokracja
Ewolucja technologii i obyczajów w SF

piątek, listopada 06, 2009

JavaStore - pierwsze wrażenia

Korzystając z tego, że będąc w firmowej sieci jestem często postrzegany przez zagraniczne serwisy jako ktoś będący w stanach postanowiłem spróbować użyć JavaStore ;-)Pobrałem aplikację do korzystania z JavaStorestworzyłem konto, nawet w nim nie kłamałem i napisałem, że jestem z Polski.Próby zrobienia tego samego bez bycia w sieci firmowej spełzły na niczym ;-)Aplikacja się zainstalowała,ale niestety każda próba uruchomienia jej kończy się informacją o problemach z siecią.Pierwsze wrażenie z używania to dlaczego to takie wolne?Kocham Java'ę, ale na moim firmowym laptopie aplikacja do JavaStore, która napisana jest podobno w JavaFX działa strasznie wolno. Może to przez to, że musi łączyć się często przez sieć?Sun postanowił pójść drogą rozsądku i wszystkie zakupy realizowane są przez konto PayPal. To powinno być pomocne. Sam nie próbowałem zakupów ponieważ nie znalazłem na razie żadnej aplikacji godnej kupienia ;-)Z tego co można stwierdzić JavaStore dystrybuuje oprogramowanie przy pomocy Java Web Start, czyli najpierw pobierany jest plik JNLP, który uruchamiany jest przez Java Web Start, a JWS pobiera JARa z aplikacją.Z tego co widać w Internecie JavaStore wspiera w jakiś sposób zarządzanie licencjami, tak więc programista nie musi się tym tak bardzo kłopotać.Sama instalacja aplikacji zaczyna się od obejrzenia informacji o niej:Mamy wtedy dostępne 2 guziczki, Preview i Launch.Kliknięcie Preivew powoduje pobranie dema aplikacji, która jednak nie instaluje się wtedy na komputerze.Launch to pobranie aplikacji i jej uruchomienie.Niestety nie wiem czy developer jest zobowiązany do dostarczenia dema, czy może jest ono dobrowolne, czy też w co akurat wątpię, jest tworzone przez JavaStore.Istnieje też dużo prostszy sposób instalacji :-) Wystarczy po prostu przeciągnąć wybraną aplikację z okienka JavaStore na pulpit :-)Dużym plusem JavaStore jest support, o czym przekonałem się korzystając z jego pomocy :-)Konto założyłem kilka dni temu, dziś próbowałem się zalogować, ale nie mogłem sobie przypomnieć hasła, nie pamiętałem też nazwy użytkownika. Na stronie wystarczyło podać adres e-mail i po chwili trafił do mnie e-mail z moją nazwą użytkownika, gorzej było z przypomnieniem hasła, tutaj próbowałem 3 albo 4 razy w przeciągu 3 godzin i to bez sukcesów. Skorzystałem więc z chata z supportem.Jestem do tego przyzwyczajony z firmy gdzie czasem muszę czekać kilka minut aż trafię na wolnego pomocnika, a tutaj po góra 20 sekundach uzyskałem połączenie z niejaką Darja'ą, która dowiedziawszy się o moim problemie poinformowała mnie, że rzeczywiście niektórzy klienci zaobserwowali takie zachowanie ostatnio, i czy może mi pomóc przez zresetowanie hasła ręcznie. Zgodziłem się ;-) i już po chwili mogłem spokojnie zalogować się do JavaStore :-)Jak widać od strony klienta JavaStore działa dość sprawnie, choć jest to jeszcze beta, która dostępna jest na razie tylko w USA.Aplikacji nie ma tam na razie zbyt wielu, jeśli mnie pamięć nie myli to około 70, z czego większość jest darmowa. Znajdziemy tam aplikację wyświetlającą zdjęcia astronomiczne NASA, Java'owy odpowiednik gadżetów z Windows Vista [w 7 chyba też są, ale i tak nie używam więc nie wiem :-)] tudzież z Google Docs, ciekawostką tu jest to, że takim gadżetem można uczynić podobno praktycznie każdą aplikację Java. Są narzędzia do synchronizacji urządzeń mobilnych, proste narzędzia do sieci społecznościowych takich jak Facebook i proste narzędzia jak linijka ;-)Ogólnie wybór jest na razie taki sobie.Wychodzi na to, że trzeba czekać na otwarcie JavaStore na resztę świata.Ciekawe też jak sprawa współpracy z JavaStore wygląda od strony developera :-)Ciekaw też jestem czy ktoś pójdzie jeszcze drogą przetartą wcześniej marketami Apple i Android Marketem, a teraz przecieraną przez JavaStore i czy stworzy np. coś takiego dla rozszerzeń do OpenOffice.org i podobnymi :-)JavaStore działa w oparciu o Java 1.6

Podobne postybeta
Chrome OS po 24 godzinach
Windows 8 Preview - koszmar to za mało....
wait() i notify()/notifyAll() - najbardziej nierozumiane metody klasy Object ;-)
Swing - największe zło Java'y ;-)
Ice Cream Sandwich na Naxus S :-) ciąg dalszy ;-)

środa, listopada 04, 2009

Krzyżowcy

Dziś palmę pierwszeństwa w dawaniu radości zabawnymi wypowiedziami przypada panu Pieronkowi, który ubrany w uniform służbowy funkcjonariusza najstarszej firmy świata stwierdził, że jej symbol czyli krzyż, nie jest symbolem religijnym a kulturowym....

Ciekawe, że gdy artystka Nieznalska umieściła na symbolu kulturowym jakim, wg. słów pana Pieronka, jest krzyż zdjęcie męskich genitaliów to nagle ten niereligijny symbol kulturowy doznał cudownego przemienienia w symbol religijny.........

Bądźmy szczerzy wieszanie symboli religijnych to najzwyczajniejsze w świecie znaczenie terenu przez zindoktrynowane religijnie umysły. To chęć pokazania tego, że dana przestrzeń została opanowana przez daną religię. To czysta demonstracja.
Wieszanie zawsze odbywało się i odbywa z inicjatywy pokazowych lub gorliwych wyznawców [co zresztą zwykle jest tożsame] i miało i ma tylko zademonstrować dominację.

Bo szczerze, po co w sali szkolnej krzyż? Jaki jest inny cel wieszania tego krzyża niż pokazanie dominacji?


Podobne postybeta
1:0 w pojedynku JavaScript vs. PHP
Szok kulturowy
Quidam - Cirque du Soleil
Wojna ze świętam, czyli o wyższości Świąt Bożegonarodzenia nad Wielkanocą ;-)
Minarety vs. krzyże - 0:1?

Czas nowych laptopów ;-)

Proszę, tydzień temu kupiłem sobie dla siebie nowego laptopa, a wczoraj w firmie dostałem maila mówiącego o tym, że ponieważ mój obecny firmowy sprzęt zbliża się do wieku 36 miesięcy to mam potwierdzić, że go ciągle mam i wybrać sobie to co chcę dostać w ramach refresha ;-)
Co oznacza, że tak gdzieś na początku grudnia dostanę funkiel nówkę laptopa firmowego :-) A w każdym bądź razie taka jest nadzieja ;-)


Podobne postybeta
Nieprzytomny
Rok temu zmieniłem pracę - podsumowanie
Umykający postęp
Dzień z frontu ;-)
PKO BP ssie

wtorek, listopada 03, 2009

Sarkania na C++

Przyznam, że moim językiem jest Java. C# uważam za popsutą Java'ę [tak w składni jak i w wydajności], ale zawsze miałem jakiś sentyment do C i C++....

Do dziś, a właściwie do wczoraj ;-)

Postanowiłem przekompilować programik do badania wydajności procesora ["słynne" liczenie całki numerycznej z e-x2] i tym razem postanowiłem to zrobić nie w Dev-C++, a w Visual C++ 2008 Express Edition......
I oczywiście nie dało się tego zrobić przez proste przeniesienie kodu, a dokładniej to sam kod jako kod się przeniósł bez żadnych problemów, ale już np. użycie M_E jako wartości stałej e czyli liczby Eulera już się nie udało, bo w VC++ w math.h nie ma takowej.
W MinGW, czyli porcie GCC do Windows M_E w math.h istnieje, a w VC++ nie istnieje ;-)
Zapewne chodzi tu o to, że mieszam C z C++, ale mimo wszystko nie czuję się winny.

Zresztą C++ to chyba jeden z niewielu języków programowania [a z tych mainstreamowcyh na pewno] w przypadku których istnieje taka sytuacja, że ŻADEN z kompilatorów nie spełnia w 100% specyfikacji ;-)

Ale i tak jak będę miał kiedyś dłuższą chwilę to się w końcu przyuczę C++ ;-) ale denerwują takie problemy jak obecność, nieobecność stałej........ zresztą się założę, że ona tam gdzieś jest, tylko pewnie trzeba do niej inaczej sięgać.

Tak btw. kiedyś przeczytałem bardzo fajne stwierdzenie na grupie poświęconej C++, szło to mniej więcej tak: "Warto się nauczyć MFC! Wtedy człowiek dopiero docenia jaką wspaniałą robotę zrobił Borland pisząc VLC" ;-)
Ja to mogę sparafrazować tak: "Warto uczyć się C++ i C, żeby zobaczyć jak pięknie jest to zrobione w Java'ie" ;-)

Podobne postybeta
32 bity vs. 64 bity, tym razem C++ ;-)
Raspberry Pi to nie jest demon prędkości ;-)
Dysonans poznawczy roku 2017 ;-)
Nadpłacanie kredytu - arkusz ;-)
Jestem anonimowym programistą....