eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programming › zadanie z netu
Ilość wypowiedzi w tym wątku: 63

  • 31. Data: 2013-03-28 23:55:08
    Temat: Re: zadanie z netu
    Od: bartekltg <b...@g...com>

    W dniu 2013-03-28 21:50, Michoo pisze:

    >
    > W znanych mi implementacjach tak - jest automat zjadający wejście i
    > wypluwający wyjście (pobierając/zapisując kolejne rekordy ze stosu)
    > (hmmm, ciekawe, czy printf jest turing complete ;) ).

    To nie linuksowy edytor tekstu;-)


    >>
    >>> No chyba, ze extreme: jak po linuxem to można użyć czystego read albo
    >>> jeszcze lepiej mmap
    >>
    >> W przykładzie który widziałem (właśnie z takich konkursików)
    >> gość użył fgets + bufor + własne przerabianie na liczby.
    >
    > Na potyczkach używałem kiedyś atoi - jest dostatecznie szybkie. fgets ma
    > jedną dodatkową wartwę po drodze do read.


    O jakim dokładnie read mówisz? w stdio nic takiego nie widzę.


    >> U nas tablica mieszająca i tak pewnie zasłoniłaby swoim czasem
    >> działania szczegóły wczytywania.
    >
    > Dla takich problemów dobra funkcja mieszająca to taka, która działa
    > możliwie liniowo. Zrobiłbym wektor wskaźników na funkcję do wykrywania
    > końca linii i lookup do robienia to_lower - w takiej konfiguracji
    > czytanie bajt-po-bajcie kontra czytanie blokami da duuużą różnicę.

    "wektor wskaźników do wykrywania końca linii"?


    >>> Trzeba zrobić szybkie lower/upper (pewnie lookup table, nieduże w
    >>> sumie).
    >>
    >> O zapomnialem o tym. Tablica na 256 elementów to nie problem,
    >
    > O ile wejście jest 8-bit/znak - wtedy użyłbym w sumie jumptable.

    Nie wyjdzie z grubsza na to samo? A 256 bajtów pewnie ładnie
    się blisko procesora zmieści.


    >> a dzieki temu za darmo mamy utożsamienie wszystkich białych
    >> znaków, interpunkcji etc.
    >
    > 256*4/8bajty na wskaźnik całkiem nieźle rezyduje w cache. O ile tylko
    > jumptable nie zepsuje za bardzo pipeline to powinna wymiatać.

    Nadal nie widzę przewagi. Może nie wiem, co dokładnie masz na myśli.


    > Tak w ogóle teraz mnie deadline ścigają ale za jakieś 2 tygodnie to może
    > skrobnę programik - będzie można zrobić konkurs ;)

    Można zrobić. Teraz święta, a 2 tygodnie to i pewnie firowy
    konkurs minie. Tylko skoro potępiłeś maszynkę, trzeba będzie
    jakoś to sprawiedliwie mierzyć;)

    Jakiś zestaw ebooków się znajdzie;)

    pzdr
    bartekltg



  • 32. Data: 2013-03-29 11:41:56
    Temat: Re: zadanie z netu
    Od: firr kenobi <p...@g...com>

    W dniu czwartek, 28 marca 2013 23:55:08 UTC+1 użytkownik bartekltg napisał:
    > W dniu 2013-03-28 21:50, Michoo pisze:
    >
    >
    >
    > >
    >
    > > W znanych mi implementacjach tak - jest automat zjadający wejście i
    >
    > > wypluwający wyjście (pobierając/zapisując kolejne rekordy ze stosu)
    >
    > > (hmmm, ciekawe, czy printf jest turing complete ;) ).
    >
    >
    >
    > To nie linuksowy edytor tekstu;-)
    >
    >
    >
    >
    >
    > >>
    >
    > >>> No chyba, ze extreme: jak po linuxem to można użyć czystego read albo
    >
    > >>> jeszcze lepiej mmap
    >
    > >>
    >
    > >> W przykładzie który widziałem (właśnie z takich konkursików)
    >
    > >> gość użył fgets + bufor + własne przerabianie na liczby.
    >
    > >
    >
    > > Na potyczkach używałem kiedyś atoi - jest dostatecznie szybkie. fgets ma
    >
    > > jedną dodatkową wartwę po drodze do read.
    >
    >
    >
    >
    >
    > O jakim dokładnie read mówisz? w stdio nic takiego nie widzę.
    >
    >
    >
    >
    >
    > >> U nas tablica mieszająca i tak pewnie zasłoniłaby swoim czasem
    >
    > >> działania szczegóły wczytywania.
    >
    > >
    >
    > > Dla takich problemów dobra funkcja mieszająca to taka, która działa
    >
    > > możliwie liniowo. Zrobiłbym wektor wskaźników na funkcję do wykrywania
    >
    > > końca linii i lookup do robienia to_lower - w takiej konfiguracji
    >
    > > czytanie bajt-po-bajcie kontra czytanie blokami da duuużą różnicę.
    >
    >
    >
    > "wektor wskaźników do wykrywania końca linii"?
    >
    >
    >
    >
    >
    > >>> Trzeba zrobić szybkie lower/upper (pewnie lookup table, nieduże w
    >
    > >>> sumie).
    >
    > >>
    >
    > >> O zapomnialem o tym. Tablica na 256 elementów to nie problem,
    >
    > >
    >
    > > O ile wejście jest 8-bit/znak - wtedy użyłbym w sumie jumptable.
    >
    >
    >
    > Nie wyjdzie z grubsza na to samo? A 256 bajtów pewnie ładnie
    >
    > się blisko procesora zmieści.
    >
    >
    >
    >
    >
    > >> a dzieki temu za darmo mamy utożsamienie wszystkich białych
    >
    > >> znaków, interpunkcji etc.
    >
    > >
    >
    > > 256*4/8bajty na wskaźnik całkiem nieźle rezyduje w cache. O ile tylko
    >
    > > jumptable nie zepsuje za bardzo pipeline to powinna wymiatać.
    >
    >
    >
    > Nadal nie widzę przewagi. Może nie wiem, co dokładnie masz na myśli.
    >
    >
    >
    >
    >
    > > Tak w ogóle teraz mnie deadline ścigają ale za jakieś 2 tygodnie to może
    >
    > > skrobnę programik - będzie można zrobić konkurs ;)
    >
    >
    >
    > Można zrobić. Teraz święta, a 2 tygodnie to i pewnie firowy
    >
    > konkurs minie. Tylko skoro potępiłeś maszynkę, trzeba będzie
    >
    > jakoś to sprawiedliwie mierzyć;)
    >
    >
    >
    > Jakiś zestaw ebooków się znajdzie;)
    >

    co do czytania z pliku to mysle ze mozna to
    olać bo (jak mysle) czas odczytania tego z dysku
    wlasnie bedzie zapewne wiekszy (?) niz czas wykonania
    samej kalkulacji

    jaki jest 'zamortyzowany' ;) koszt odczytania
    jednego bajta/kilobajta/megabajta z dysku ?
    dla megabajta (powiedzmy ze ksiazka wejsciowa)
    to byloby pewnie rzedu (uwaga grube oszacowanie
    bo nie bardzo wiem;) z 1/50 sekundy (= 20 ms)
    pewnie w praktyce - ten rozruch glowicy itp
    to powodowaloby ze jest to wiecej 50-100, 200 ms?

    jesli 200 ms to same obliczenia mz powinny trwac mniej niz tyle (bo ja bym ozacowal
    ze te obliczenia
    powinny sie chyba wyrobic pod 50 ms - ale tez zgrubne oszacowanie )






  • 33. Data: 2013-03-29 11:44:39
    Temat: Re: zadanie z netu
    Od: firr kenobi <p...@g...com>

    W dniu piątek, 29 marca 2013 11:41:56 UTC+1 użytkownik firr kenobi napisał:
    > W dniu czwartek, 28 marca 2013 23:55:08 UTC+1 użytkownik bartekltg napisał:
    >
    > > W dniu 2013-03-28 21:50, Michoo pisze:
    >
    > >
    >
    > >
    >
    > >
    >
    > > >
    >
    > >
    >
    > > > W znanych mi implementacjach tak - jest automat zjadający wejście i
    >
    > >
    >
    > > > wypluwający wyjście (pobierając/zapisując kolejne rekordy ze stosu)
    >
    > >
    >
    > > > (hmmm, ciekawe, czy printf jest turing complete ;) ).
    >
    > >
    >
    > >
    >
    > >
    >
    > > To nie linuksowy edytor tekstu;-)
    >
    > >
    >
    > >
    >
    > >
    >
    > >
    >
    > >
    >
    > > >>
    >
    > >
    >
    > > >>> No chyba, ze extreme: jak po linuxem to można użyć czystego read albo
    >
    > >
    >
    > > >>> jeszcze lepiej mmap
    >
    > >
    >
    > > >>
    >
    > >
    >
    > > >> W przykładzie który widziałem (właśnie z takich konkursików)
    >
    > >
    >
    > > >> gość użył fgets + bufor + własne przerabianie na liczby.
    >
    > >
    >
    > > >
    >
    > >
    >
    > > > Na potyczkach używałem kiedyś atoi - jest dostatecznie szybkie. fgets ma
    >
    > >
    >
    > > > jedną dodatkową wartwę po drodze do read.
    >
    > >
    >
    > >
    >
    > >
    >
    > >
    >
    > >
    >
    > > O jakim dokładnie read mówisz? w stdio nic takiego nie widzę.
    >
    > >
    >
    > >
    >
    > >
    >
    > >
    >
    > >
    >
    > > >> U nas tablica mieszająca i tak pewnie zasłoniłaby swoim czasem
    >
    > >
    >
    > > >> działania szczegóły wczytywania.
    >
    > >
    >
    > > >
    >
    > >
    >
    > > > Dla takich problemów dobra funkcja mieszająca to taka, która działa
    >
    > >
    >
    > > > możliwie liniowo. Zrobiłbym wektor wskaźników na funkcję do wykrywania
    >
    > >
    >
    > > > końca linii i lookup do robienia to_lower - w takiej konfiguracji
    >
    > >
    >
    > > > czytanie bajt-po-bajcie kontra czytanie blokami da duuużą różnicę.
    >
    > >
    >
    > >
    >
    > >
    >
    > > "wektor wskaźników do wykrywania końca linii"?
    >
    > >
    >
    > >
    >
    > >
    >
    > >
    >
    > >
    >
    > > >>> Trzeba zrobić szybkie lower/upper (pewnie lookup table, nieduże w
    >
    > >
    >
    > > >>> sumie).
    >
    > >
    >
    > > >>
    >
    > >
    >
    > > >> O zapomnialem o tym. Tablica na 256 elementów to nie problem,
    >
    > >
    >
    > > >
    >
    > >
    >
    > > > O ile wejście jest 8-bit/znak - wtedy użyłbym w sumie jumptable.
    >
    > >
    >
    > >
    >
    > >
    >
    > > Nie wyjdzie z grubsza na to samo? A 256 bajtów pewnie ładnie
    >
    > >
    >
    > > się blisko procesora zmieści.
    >
    > >
    >
    > >
    >
    > >
    >
    > >
    >
    > >
    >
    > > >> a dzieki temu za darmo mamy utożsamienie wszystkich białych
    >
    > >
    >
    > > >> znaków, interpunkcji etc.
    >
    > >
    >
    > > >
    >
    > >
    >
    > > > 256*4/8bajty na wskaźnik całkiem nieźle rezyduje w cache. O ile tylko
    >
    > >
    >
    > > > jumptable nie zepsuje za bardzo pipeline to powinna wymiatać.
    >
    > >
    >
    > >
    >
    > >
    >
    > > Nadal nie widzę przewagi. Może nie wiem, co dokładnie masz na myśli.
    >
    > >
    >
    > >
    >
    > >
    >
    > >
    >
    > >
    >
    > > > Tak w ogóle teraz mnie deadline ścigają ale za jakieś 2 tygodnie to może
    >
    > >
    >
    > > > skrobnę programik - będzie można zrobić konkurs ;)
    >
    > >
    >
    > >
    >
    > >
    >
    > > Można zrobić. Teraz święta, a 2 tygodnie to i pewnie firowy
    >
    > >
    >
    > > konkurs minie. Tylko skoro potępiłeś maszynkę, trzeba będzie
    >
    > >
    >
    > > jakoś to sprawiedliwie mierzyć;)
    >
    > >
    >
    > >
    >
    > >
    >
    > > Jakiś zestaw ebooków się znajdzie;)
    >
    > >
    >
    >
    >
    > co do czytania z pliku to mysle ze mozna to
    >
    > olać bo (jak mysle) czas odczytania tego z dysku
    >
    > wlasnie bedzie zapewne wiekszy (?) niz czas wykonania
    >
    > samej kalkulacji
    >
    >
    >
    > jaki jest 'zamortyzowany' ;) koszt odczytania
    >
    > jednego bajta/kilobajta/megabajta z dysku ?
    >
    > dla megabajta (powiedzmy ze ksiazka wejsciowa)
    >
    > to byloby pewnie rzedu (uwaga grube oszacowanie
    >
    > bo nie bardzo wiem;) z 1/50 sekundy (= 20 ms)
    >
    > pewnie w praktyce - ten rozruch glowicy itp
    >
    > to powodowaloby ze jest to wiecej 50-100, 200 ms?
    >
    >
    >
    > jesli 200 ms to same obliczenia mz powinny trwac mniej niz tyle (bo ja bym ozacowal
    ze te obliczenia
    >
    > powinny sie chyba wyrobic pod 50 ms - ale tez zgrubne oszacowanie )

    w zasadzie to mozna tez tego nie olewac tylko
    wtedy zrobi sie to ew konkurs na optymalizowanie
    operacji wczytywania pliku z dysku - tez bardzo
    ciekawa sprawa, w zasadzie to dla mnie wlasnie
    nawet ciekawsze tyle ze nie znam sie na tym


  • 34. Data: 2013-03-29 12:21:14
    Temat: Re: zadanie z netu
    Od: "M.M." <m...@g...com>

    W dniu piątek, 29 marca 2013 11:41:56 UTC+1 użytkownik firr kenobi napisał:
    > co do czytania z pliku to mysle ze mozna to
    > olać bo (jak mysle) czas odczytania tego z dysku
    Moja propozycja jest taka, żeby wczytać plik i N razy
    wykonać zadanie w pamięci RAM. Stoper uruchamiamy po
    wczytaniu pliku.
    Pozdrawiam


  • 35. Data: 2013-03-29 12:23:11
    Temat: Re: zadanie z netu
    Od: "M.M." <m...@g...com>

    W dniu piątek, 29 marca 2013 11:44:39 UTC+1 użytkownik firr kenobi napisał:
    > w zasadzie to mozna tez tego nie olewac tylko
    > wtedy zrobi sie to ew konkurs na optymalizowanie
    > operacji wczytywania pliku z dysku - tez bardzo
    > ciekawa sprawa, w zasadzie to dla mnie wlasnie
    > nawet ciekawsze tyle ze nie znam sie na tym
    Jest ciekawe, można zrobić dwie kategorie:
    a) czas wykonania całego programu
    b) czas wykonania bez czasu wczytania
    Pozdrawiam


  • 36. Data: 2013-03-29 13:07:19
    Temat: Re: zadanie z netu
    Od: firr kenobi <p...@g...com>

    >
    >
    > jaki jest 'zamortyzowany' ;) koszt odczytania
    > jednego bajta/kilobajta/megabajta z dysku ?
    > dla megabajta (powiedzmy ze ksiazka wejsciowa)
    > to byloby pewnie rzedu (uwaga grube oszacowanie
    >
    > bo nie bardzo wiem;) z 1/50 sekundy (= 20 ms)
    > pewnie w praktyce - ten rozruch glowicy itp
    > to powodowaloby ze jest to wiecej 50-100, 200 ms?
    >
    >
    >
    > jesli 200 ms to same obliczenia mz powinny trwac mniej niz tyle (bo ja bym ozacowal
    ze te obliczenia
    > powinny sie chyba wyrobic pod 50 ms - ale tez zgrubne oszacowanie )






    Dokonałem pewnych prostych testów i wyniki mnie zszokowały :U (mam w domu naprawde
    starego kompa i stary dysk tak ze to sa dane dla mojego sprzetu, mam nadzieje ze nic
    z testem nie zbabrałem ale chyba nie)

    wczytanie pilku 1MB przec fgetc - mw 11 milisekund (powtarzane kilka razy, wiec z
    cache)


    pierwszy szok bo mz jest to nieslychanie szybko, wydawalo mi sie ze to powinno byc z
    10 razy wolniej

    wczytanie pilku 300 bajtow przec fgetc - mw 0.2 milisekundy



    wczytanie pilku 10MB przec fgetc - mw 120 milisekundy (kolene uruchomienia) -
    pierwsze uruchomienie 1.2 sekundy


    szybko, widac ze z cache działa 10x szybciej niz
    bez

    wczytanie pilku 1MB przec fread - mw 3 ms (kolene uruchomienia)


    kojejny szok, wczytywanie przez fread jest 3-4 razy szybsze niz przez fgetc - w zyciu
    bym sie nie spodziewal bo przeciez wydaje sie ze fgetc mozna zrobic jako b lekki
    wrapper na fread i powinno byc to samo a tu tymczasem jednak nie :/

    wczytanie pilku 10MB przec fread - mw 31 ms (kolene uruchomienia)


    [okazalo sie ze przeszacowałem (tj przynajmniej
    dla wynikow lecacych z cache jest cholernie
    szybko, dla pierwszego wczytania juz jest realistycznie eolniej) akurat przegapilem
    wersje dal 1MB bez cache ale pewnie gdzies tak okolo 100 ms czyli mw zgodnie z
    oszacowaniem ]


  • 37. Data: 2013-03-29 13:52:54
    Temat: Re: zadanie z netu
    Od: firr kenobi <p...@g...com>

    W dniu piątek, 29 marca 2013 12:23:11 UTC+1 użytkownik M.M. napisał:
    > W dniu piątek, 29 marca 2013 11:44:39 UTC+1 użytkownik firr kenobi napisał:
    >
    > > w zasadzie to mozna tez tego nie olewac tylko
    >
    > > wtedy zrobi sie to ew konkurs na optymalizowanie
    >
    > > operacji wczytywania pliku z dysku - tez bardzo
    >
    > > ciekawa sprawa, w zasadzie to dla mnie wlasnie
    >
    > > nawet ciekawsze tyle ze nie znam sie na tym
    >
    > Jest ciekawe, można zrobić dwie kategorie:
    >
    > a) czas wykonania całego programu
    > b) czas wykonania bez czasu wczytania
    >

    to nawet bylby dosyc rozwojowy konkurs -

    gdyby w pierwszym wypadku to pewnie nalezaloby
    zarzucic asynchroniczny read na pliku i juz w trakcie wczytywania go przetwarzac -
    nie wiem
    czy da sie tak robic w takiej malej skali
    czasowej tj w ciagu mw kilkudziesieciu
    milisekund - moze..




  • 38. Data: 2013-03-29 15:33:01
    Temat: Re: zadanie z netu
    Od: "M.M." <m...@g...com>

    W dniu piątek, 29 marca 2013 13:52:54 UTC+1 użytkownik firr kenobi napisał:
    > to nawet bylby dosyc rozwojowy konkurs -
    To czy bedzie rozwojowy czy nie, bedzie zalezalo od tego
    kto sie ile w trakcie konkursu nauczy :)

    Trochę zabawy przy tym jest... może napiszę...
    nie wiem jeszcze.


    > gdyby w pierwszym wypadku to pewnie nalezaloby
    > zarzucic asynchroniczny read na pliku i juz w trakcie
    > wczytywania go przetwarzac - nie wiem
    Można coś lepiej wykombinować niż wczytanie pliku do RAM
    jednym wywołaniem funkcji read?

    Pozdrawiam


  • 39. Data: 2013-03-29 16:07:55
    Temat: Re: zadanie z netu
    Od: firr kenobi <p...@g...com>

    W dniu piątek, 29 marca 2013 15:33:01 UTC+1 użytkownik M.M. napisał:
    > W dniu piątek, 29 marca 2013 13:52:54 UTC+1 użytkownik firr kenobi napisał:
    >
    > > to nawet bylby dosyc rozwojowy konkurs -
    >
    > To czy bedzie rozwojowy czy nie, bedzie zalezalo od tego
    >
    > kto sie ile w trakcie konkursu nauczy :)
    >
    >
    >
    > Trochę zabawy przy tym jest... może napiszę...
    >
    > nie wiem jeszcze.
    >
    >
    >
    >
    >
    > > gdyby w pierwszym wypadku to pewnie nalezaloby
    >
    > > zarzucic asynchroniczny read na pliku i juz w trakcie
    >
    > > wczytywania go przetwarzac - nie wiem
    >
    > Można coś lepiej wykombinować niż wczytanie pliku do RAM
    >
    > jednym wywołaniem funkcji read?
    >

    windowsowe ReadFile działa na oko tak samo jak
    fread - aloe nie jestem pewien bo troche trudno
    jest mi porownywac to pierwsze niecacheowane
    wczytanie ;/
    Pozniej sprawdze pwenie jak dziala to asynchroniczne wczytywanie




  • 40. Data: 2013-03-29 19:04:19
    Temat: Re: zadanie z netu
    Od: "M.M." <m...@g...com>

    W dniu piątek, 29 marca 2013 16:07:55 UTC+1 użytkownik firr kenobi napisał:
    > windowsowe ReadFile działa na oko tak samo jak
    > fread - aloe nie jestem pewien bo troche trudno
    > jest mi porownywac to pierwsze niecacheowane
    > wczytanie ;/
    > Pozniej sprawdze pwenie jak dziala to asynchroniczne wczytywanie

    A moze jakies inne zadanie? Takie zeby bardziej trafialo w
    algorytmike a mniej w szczegoly implementacji, czy dzialania
    systemu?
    Pozdrawiam


strony : 1 ... 3 . [ 4 ] . 5 ... 7


Szukaj w grupach

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: