eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingwydajnosc wyjatkow › Re: wydajnosc wyjatkow
  • Path: news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail
    From: " M.M." <m...@g...pl>
    Newsgroups: pl.comp.programming
    Subject: Re: wydajnosc wyjatkow
    Date: Wed, 28 Mar 2012 13:32:27 +0000 (UTC)
    Organization: "Portal Gazeta.pl -> http://www.gazeta.pl"
    Lines: 47
    Message-ID: <jkv3tb$q0$1@inews.gazeta.pl>
    References: <jkuce7$3sv$1@inews.gazeta.pl> <jkur6v$bke$1@inews.gazeta.pl>
    NNTP-Posting-Host: localhost
    Content-Type: text/plain; charset=ISO-8859-2
    Content-Transfer-Encoding: 8bit
    X-Trace: inews.gazeta.pl 1332941547 832 172.20.26.238 (28 Mar 2012 13:32:27 GMT)
    X-Complaints-To: u...@a...pl
    NNTP-Posting-Date: Wed, 28 Mar 2012 13:32:27 +0000 (UTC)
    X-User: mariotti
    X-Forwarded-For: 89.229.34.123
    X-Remote-IP: localhost
    Xref: news-archive.icm.edu.pl pl.comp.programming:196419
    [ ukryj nagłówki ]

    Edek Pienkowski <e...@g...com> napisał(a):

    > Dzisiaj różnica w szybkości działania jest prawie żadna, o ile
    > wyjątek nie jest rzucony. Jest narzut na obsługę wyjątku w postaci
    > kodu obsługującego (czy masło jest wystarczająco maślane? ;) i
    > straconych optymalizacji - to już zależy od języka i implementacji
    > wyjątków.
    Dziękuję z utwierdzenie mnie w tym przekonaniu :)

    > Musi być kod robiący wszystko to, co jest przewidziane. W C++ oznacza
    > to destrukcję lokalnych obiektów, sprawdzenie catch-clauses i
    > unexpected-handlera, poza samym stack unwind.
    No tak, ale to wszystko musi także wykonać bez wyjątków w
    momencie gdy napotyka return? Hmmm a tak na marginesie gdy napotyka
    longjump to co robi? Też robi destrukcje obiektów na stosie?


    > > Gdy kompilator napotyka koniec sekcji catch to co musi zrobić? Chyba tylko
    > > musi usunąć ze stosu to co wcześniej na nim zapamiętał. Więc o wydajności
    > > decyduje sposób w jaki to kompilator zapamiętuje.


    > (?) Nie kompiluje mi się to co napisałeś.
    Nie wiem dokładnie jak nowoczesne kompilator/optymalizatory realizują obsługę
    wyjątków. Wyobrażam sobie to jako jakąś strukturę stosową. Gdy
    wykonanie programu dochodzi do sekcji try to na tą strukturę odkładana
    jest jakaś informacja. Więc gdy wykonanie programu dojdzie do końca
    sekcji catch to coś z tej struktury stosowej musi zdjąć. Jest to
    związane z jakimś narzutem. Nie wiem na pewno, ale wydaje się że ów
    narzut jest bardzo mały.

    > Sam fakt, że wyjątek ma stos zmienia optymalizacje. W c++
    > stos zależy od optymalizacji; w Javie generalnie nie, ale czasami
    > tak.
    Hmmmm zapewne tak. Ale czy to nie jest podobne utrudnienie optymalizacji
    dla kompilatora jak po dodaniu instrukcji if? Kompilator generuje gorszy
    kod gdy są wyjątki?

    > Sam fakt, że JIT domyślnie upraszcza zachowanie tak, że zmienia
    > semantykę NPE, świadczy o tym, że architekci uznali że warto.
    Hmmm to chyba jednak zrobię kiedyś przy okazji jakiś mały benchmark :)

    Pozdrawiam


    --
    Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: