eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaarduino, początki, inny edytorRe: arduino, początki, inny edytor
  • Path: news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!go
    blin3!goblin1!goblin.stu.neva.ru!newsfeed.neostrada.pl!unt-exc-01.news.neostrad
    a.pl!unt-spo-b-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
    From: slawek <f...@f...com>
    Newsgroups: pl.misc.elektronika
    Subject: Re: arduino, początki, inny edytor
    Date: Sat, 29 Apr 2017 10:59:04 +0200
    Content-Type: text/plain; charset=UTF-8; format=flowed
    Content-Transfer-Encoding: 8bit
    In-Reply-To: <a...@n...neostrada.pl>
    References: <odoalq$orc$1@dont-email.me> <odoalq$orc$1@dont-email.me>
    <a...@n...v.pl>
    <odt7u9$ni$1@node2.news.atman.pl>
    <a...@n...v.pl>
    <a...@n...neostrada.pl>
    <a...@n...v.pl>
    <a...@n...neostrada.pl>
    <a...@n...neostrada.pl>
    Message-ID: <a...@n...v.pl>
    User-Agent: Groundhog Newsreader for Android
    Lines: 36
    Organization: Telekomunikacja Polska
    NNTP-Posting-Host: 188.47.94.189
    X-Trace: 1493456344 unt-rea-b-01.news.neostrada.pl 654 188.47.94.189:60346
    X-Complaints-To: a...@n...neostrada.pl
    Xref: news-archive.icm.edu.pl pl.misc.elektronika:717433
    [ ukryj nagłówki ]

    On Sat, 29 Apr 2017 10:03:15 +0200, Marek <f...@f...com> wrote:
    > Może inaczej, zaproponuj wydajniejsze rozwiązanie bez goto dla
    > przypadku omawianego tutaj:
    > http://www.cprogramming.com/tutorial/goto.html

    Przecież już napisałem jak to zrobić. Co do wydajności: mit. Jeżeli
    chcesz mieć szybko to piszesz w Asemblerze, jeżeli dobrze to w
    czymkolwiek byle nie Asembler. Wydajność nie zależy od zysku 1% "bo
    goto jest szybsze". Wydajność osiąga się algorytmem O(N^2.4) zamiast
    O(N^3).

    Anyway, choć prawdopodobnie tego nie zrozumiesz, to mogłoby być tak:

    double GetData (const char* name){
    int returnedValue = NAN;
    FILE *file = Open(name) ;
    Buffer *buffer = AllocateBuffer();
    if ( file && buffer)
    {
    returnedValue =.....
    }

    Close(file);
    FreeBuffer(buffer);
    return returnedValue;
    }

    I to działa. Bo to na Close i na FreeBuffer spada odpowiedzialność za
    poprawne obsłuzenie sytuacji gdy nie trzeba zwalniać zasobu. A
    dowiadują się o tym, bo dostają NULL.

    Proste. Skuteczne. Niemal RAII, tyle że w zwykłym C.

    Jedyne co tracimy to czas na próbę alokacji bufora gdy już file było
    NULL. Ale to sytuacja wyjątkowa i można to zaakceptować. Ewentualnie
    dodać jeszcze jedno if oraz Buffer* buffer = NULL;

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: