eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programming › jak napisać szybki program
Ilość wypowiedzi w tym wątku: 106

  • 1. Data: 2009-05-17 09:31:27
    Temat: jak napisać szybki program
    Od: Marteno Rodia <m...@o...pl>

    Góglałem, ale nie udało mi się znaleźć syntetycznej odpowiedzi na
    pytanie. Interesuje mnie, jak należy pisać program, żeby wykonywał się
    on szybko. Z reguły pisuję w Javie, teraz mam napisać program (a
    właściwie część do większego programu) w C++, który wykonuje pewne
    obliczenia potrzebne do kompresji wideo. Będzie dużo danych i dużo
    liczenia.

    Ogólnie wiem, że:

    1) dużo czasu zjadają np. operacje wejścia/wyjścia
    2) w miarę możliwości warto przydzielać pamięć statycznie, a nie
    dynamicznie
    3) unikać nadmiaru rzeczy wykonywanych w pętli (np. sprawdzanie
    jakichś warunków) - innymi słowy:
    4) tak przebudować algorytm, żeby zrobić to samo wykonując mniejszą
    ilość operacji.

    Pytania:
    1) Czy mam rację?
    2) Co jeszcze o czym nie wiem?

    pozdr.
    Marcin


  • 2. Data: 2009-05-17 10:19:52
    Temat: Re: jak napisać szybki program
    Od: "Wojtek Pietruszewski" <gotohell@once.>


    "Marteno Rodia" <m...@o...pl> wrote in message
    news:94fc50cb-2939-4dfe-80ad-3afd6a8f5b26@r34g2000vb
    i.googlegroups.com...
    Góglałem, ale nie udało mi się znaleźć syntetycznej odpowiedzi na
    pytanie. Interesuje mnie, jak należy pisać program, żeby wykonywał się
    on szybko. Z reguły pisuję w Javie, teraz mam napisać program (a
    właściwie część do większego programu) w C++, który wykonuje pewne
    obliczenia potrzebne do kompresji wideo. Będzie dużo danych i dużo
    liczenia.

    Ogólnie wiem, że:

    1) dużo czasu zjadają np. operacje wejścia/wyjścia
    2) w miarę możliwości warto przydzielać pamięć statycznie, a nie
    dynamicznie
    3) unikać nadmiaru rzeczy wykonywanych w pętli (np. sprawdzanie
    jakichś warunków) - innymi słowy:
    4) tak przebudować algorytm, żeby zrobić to samo wykonując mniejszą
    ilość operacji.

    Pytania:
    1) Czy mam rację?
    2) Co jeszcze o czym nie wiem?

    pozdr.
    Marcin


    Jeżeli będą wykonywane operacje arytmetyczne możesz spróbować wstawek
    asemblerowych.


  • 3. Data: 2009-05-17 10:19:56
    Temat: Re: jak napisać szybki program
    Od: Jacek Czerwinski <...@...z.pl>

    Marteno Rodia pisze:
    > Góglałem, ale nie udało mi się znaleźć syntetycznej odpowiedzi na
    > pytanie. Interesuje mnie, jak należy pisać program, żeby wykonywał się
    > on szybko. Z reguły pisuję w Javie, teraz mam napisać program (a
    > właściwie część do większego programu) w C++, który wykonuje pewne
    > obliczenia potrzebne do kompresji wideo. Będzie dużo danych i dużo
    > liczenia.
    >
    > Ogólnie wiem, że:
    >
    > 1) dużo czasu zjadają np. operacje wejścia/wyjścia
    > 2) w miarę możliwości warto przydzielać pamięć statycznie, a nie
    > dynamicznie
    Nie należy 'zbyt często' dynamicznie (w małych kawałkach). Obawiam sie
    że tak wielkich danych nie obsłużysz statycznie. Optymalizacja pamięci
    czasem jest zbieżna z opt.szybkości, czasem przeciwstawna.
    > 3) unikać nadmiaru rzeczy wykonywanych w pętli (np. sprawdzanie
    > jakichś warunków) - innymi słowy:
    > 4) tak przebudować algorytm, żeby zrobić to samo wykonując mniejszą
    > ilość operacji.
    >
    > Pytania:
    > 1) Czy mam rację?
    Częściowo
    > 2) Co jeszcze o czym nie wiem?
    Tak
    0) Że program ma być najpierw dobry, potem zoptymalizowany. Jak
    zaczniesz amatorsko optymalizować, możesz źle skończyć.
    a) Że kompilator potrafi bardzo dużo zoptymalizować tylko wystarczy mu
    nie przeszkadzać. Najczęściej w wyrażeniem w pętli sobie poradzi (nawet
    lepiej od człowieka)
    b) że algorytm wyższy intelektualnie (z mocnym zapleczem
    teoretyczno-matematycznym, bardziej przemyślany) może być o rzędy
    wielkości szybszy od amatorskiego. I temu nie dorównają wyłączania przed
    pętlę itd. Na video się nie znam, ale porównaj (studencki przykład)
    sortowania od naiwnego do profesjonalnego. Na słowo 'kompresja' jestem
    pewien, że algorytm naiwny będzie 100x wolniejszy.
    c) właściwości procesora (cache 1i2, sprzętowa optymalizacja pewnych
    operacji/typów, konwersje, położenie w pamięci) aż do wykorzystania
    okazji do zrównolegleń we współczesnych zabawkach

    W konkluzji:
    I) nie optymalizować.
    II) czytać dobre książki z jednej strony z branży, z drugiej o CPU i
    kompilatorach optymalizujących

    Nawiasem mówiąc w świecie Javy też powinieneś się spotkać z zaleceniami,
    po części o algorytmach, po drugie o nie przeszkadzaniu JVM.


  • 4. Data: 2009-05-17 10:21:39
    Temat: Re: jak napisać szybki program
    Od: Jacek Czerwinski <...@...z.pl>

    Wojtek Pietruszewski pisze:
    >
    >> "Marteno Rodia" <m...@o...pl> wrote in message
    >> news:94fc50cb-2939-4dfe-80ad-3afd6a8f5b26@r34g2000vb
    i.googlegroups.com...
    >> Góglałem, ale nie udało mi się znaleźć syntetycznej odpowiedzi na
    >> pytanie. Interesuje mnie, jak należy pisać program, żeby wykonywał się
    >> on szybko.
    >
    > Jeżeli będą wykonywane operacje arytmetyczne możesz spróbować wstawek
    > asemblerowych.

    Are You sure?
    PS. Wojtek zrób coś z czytnikiem


  • 5. Data: 2009-05-17 12:21:05
    Temat: Re: jak napisać szybki program
    Od: beł kociątko <u...@i...sk>

    "Jacek Czerwinski" zabełkotał:
    > Wojtek Pietruszewski pisze:
    > Are You sure?
    > PS. Wojtek zrób coś z czytnikiem
    ale co?


  • 6. Data: 2009-05-17 12:38:22
    Temat: Re: jak napisać szybki program
    Od: A.L. <a...@a...com>

    On Sun, 17 May 2009 12:19:52 +0200, "Wojtek Pietruszewski"
    <gotohell@once.> wrote:

    >
    >
    >Jeżeli będą wykonywane operacje arytmetyczne możesz spróbować wstawek
    >asemblerowych.

    Postukaj sie w glowe

    A.L.


  • 7. Data: 2009-05-17 12:41:11
    Temat: Re: jak napisać szybki program
    Od: "Wojtek Pietruszewski" <gotohell@once.>


    "Jacek Czerwinski" <...@...z.pl> wrote in message news:guoofk$u1t$2@news.onet.pl...
    > Wojtek Pietruszewski pisze:
    >>
    >>> "Marteno Rodia" <m...@o...pl> wrote in message
    >>> news:94fc50cb-2939-4dfe-80ad-3afd6a8f5b26@r34g2000vb
    i.googlegroups.com...
    >>> Góglałem, ale nie udało mi się znaleźć syntetycznej odpowiedzi na
    >>> pytanie. Interesuje mnie, jak należy pisać program, żeby wykonywał się
    >>> on szybko.
    >>
    >> Jeżeli będą wykonywane operacje arytmetyczne możesz spróbować wstawek
    >> asemblerowych.
    >
    > Are You sure?

    No jeżeli program ma działąć pod windowsem, to oczywiście

    > PS. Wojtek zrób coś z czytnikiem
    >

    Chodzi Ci o oznaczanie poprzedniej wiadomości symbolem "<"?
    Wiadomość ma ustawione Content-Transfer-Encoding: quoted-printable, Outlook się
    na tym wywala, chyba że pominąłem coś w konfiguracji.


  • 8. Data: 2009-05-17 12:46:25
    Temat: Re: jak napisać szybki program
    Od: Maciej Pilichowski <b...@S...FM>

    Jacek Czerwinski wrote:

    > W konkluzji:
    > I) nie optymalizować.

    Nie zgodze sie. Czesc optymalizacji mozna zrobic w zasadzie nie myslac, jak
    np. przyzwyczajenie sie, aby zawsze pisac ++var zamiast var++ (o ile
    merytorycznie nie zachodzi koniecznosc tego drugiego), dwa ze czesc
    optymalizacji jest trywialnych, jak np.

    int x;
    vs
    static int x;

    (tu mocno przejaskrawiam oczywiscie)

    trzy, ze czesc programow bez optymalizacji po prostu nie skonczy dzialac, a
    cztery ze w tej dzialce, ktora ja sie zajmuje musze dokonac brutalnej
    optymalizacji, aby uzyskac wyniki i zobaczyc, czy to co robie ma sens i
    wtedy podjac decyzje o merytorycznej optymalizacji.

    Wszystko jednak z glowa -- poswiecanie godziny, aby program przyspieszyl z
    10 minut do 9 minut i 50 sekund nie ma dla mnie sensu, poswiecenie tygodnia
    aby program przyspieszyl z 15 godzin do 10 godzin ma dla mnie sens.

    milego dnia, hej


  • 9. Data: 2009-05-17 12:49:26
    Temat: Re: jak napisać szybki program
    Od: "Wojtek Pietruszewski" <gotohell@once.>


    "A.L." <a...@a...com> wrote in message
    news:e91015hthrv9j4jbeuor6qj5hevg8dmh9i@4ax.com...

    >>Jeżeli będą wykonywane operacje arytmetyczne możesz spróbować wstawek
    >>asemblerowych.
    >
    > Postukaj sie w glowe
    >
    > A.L.

    a czym takim rażą Cię wstawki asemblerowe w c++, używałeś kiedyś?


  • 10. Data: 2009-05-17 13:57:45
    Temat: Re: jak napisać szybki program
    Od: A.L. <a...@a...com>

    On Sun, 17 May 2009 14:49:26 +0200, "Wojtek Pietruszewski"
    <gotohell@once.> wrote:

    >
    >"A.L." <a...@a...com> wrote in message
    >news:e91015hthrv9j4jbeuor6qj5hevg8dmh9i@4ax.com...
    >
    >>>Jeżeli będą wykonywane operacje arytmetyczne możesz spróbować wstawek
    >>>asemblerowych.
    >>
    >> Postukaj sie w glowe
    >>
    >> A.L.
    >
    >a czym takim rażą Cię wstawki asemblerowe w c++, używałeś kiedyś?

    Kiedys nei bylo waterklozetow i chodzilo sie do slawojek

    A.L.

strony : [ 1 ] . 2 ... 10 ... 11


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: