eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaarduino, początki, inny edytorRe: arduino, początki, inny edytor
  • Data: 2017-04-29 10:59:04
    Temat: Re: arduino, początki, inny edytor
    Od: slawek <f...@f...com> szukaj wiadomości tego autora
    [ pokaż wszystkie 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: