eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingBCB Moj ulubiony kod;)Re: BCB Moj ulubiony kod;)
  • Data: 2010-02-19 16:29:41
    Temat: Re: BCB Moj ulubiony kod;)
    Od: Mariusz Marszałkowski <m...@g...com> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    On 18 Lut, 10:20, Qbab <b...@p...onet.pl> wrote:
    > W dniu 2010-02-11 08:57, Wojciech "Spook" Sura pisze:
    >
    > > Bastion wrote:
    > >> Kolego, ja tak nie pisze tylko przedstawiam rozwiazanie pewnego
    > >> problemu. Laskawie pochyl glowe i zastanow sie jak w 5 linijkach kodu
    > >> lepiej mozna zwizualizowac rozwiazanie. Czekam na kod...
    >
    > > Zacznijmy od tego, że nawet nie zabierałbym się do projektowania aplikacji
    > > myśląc panicznie, żeby zmieścić się w n linijkach. Płacisz podatek od każdej
    > > napisanej linii kodu? Jeśli radość sprawia Ci upychanie programu w
    > > niewielkiej przestrzeni, to raczej wyślij Twój pomysł na IOCCC niż chwal się
    > > na grupach.
    >
    > Pamiętam czasy gdy upychanie kodu wynikało z konieczności, czasem
    > upychało się dwie zmienne w jednym bajcie bo z góry wiedziało się ile
    > bitów zajmą maksymalnie. Ale tego nie zrozumie nikt kto nie startował w
    > czasach gdy komputery miały mniej niż 64 kilobajty pamięci :)

    Koniecznosc upychania danych w bity jest caly czas akualna. Oczywiscie
    tylko tam, gdzie wazna jest wydajnosc. Propoponuje zmierzenie czasu
    wykonania tego kodu dla roznych wielkosci S. Parametr N zostaje taki
    sam, wiec ilosc operacji nie ulega zmianie, zmianie ulega tylko
    rozmiar
    danych. Duze S oznacza dane nie upakowane, male S oznacza dane
    upakowane do malej tablicy.

    #define N (1<<30)
    #define S (1024)

    static double tab[S];

    void init() {
    for( int i=0 ; i<S ; i++ )
    tab[i] = rand() % 16 - rand() % 16;
    }

    double test( ) {
    double sum = 0;
    int x = 0;
    for( int i=0 ; i<N ; i++ ) {
    x = (x + rand()) % S;
    sum += tab[x];
    }
    return sum;
    }

    int main( int argc , char *argv[] ) {
    srand(time(NULL));
    init();
    printf("sum = %lf\ntime = %u\n",test(),(unsigned int)clock());
    return 0;
    }

    Pozdrawiam

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: