-
61. Data: 2009-05-18 20:53:34
Temat: Re: jak napisać szybki program
Od: A.L. <a...@a...com>
On Mon, 18 May 2009 21:34:46 +0200, Bogu? <n...@i...net> wrote:
>Dnia 18-05-2009 o 19:35:29 A.L. <a...@a...com> napisał(a):
>
>>>> Pozwole sie nie zgodzic. Nie ma nic gorszego nie "dobre nawyki".
>>>
>>> IMHO, to jest uogólnienie.
>>>
>>>> Zwlaszcza nieuzasadnione
>>>
>>
>> Dlatego nie lubie "nawykow" bo nawyki eliminuja myslenie, a czasem
>> moga stanowiac zagrozenie dla zdrowia. Jeden moj znajomy mial nawyk
>> jezedenia pzrez most i nie zauwazyl ze nawierzchnie mosy zdjeli do
>> remontu. Gdyby myslal zamiast miec nawyki, to by sie nie utopil
>
>Gdyby nie miał pan nawyków, to by się panu płat czołowy od myślenia
>przepalił.
Widocznie mam wiekszy plat niz Pan ma.
A.L.
-
62. Data: 2009-05-18 20:58:33
Temat: Re: jak napisać szybki program
Od: A.L. <a...@a...com>
On Mon, 18 May 2009 21:47:14 +0200, "jelen" <j...@n...rykowisku>
wrote:
>
>U?ytkownik "A.L." <a...@a...com> napisa? w wiadomo?ci
>news:1f63155hoq26am5o4ls42d28s5bveolmt8@4ax.com...
>> On Mon, 18 May 2009 18:15:31 +0100, "Mateusz Loskot"
>..
>> kazdy nawyk jest dobry dopoki nei jest zatosowany w sytuacji w ktorej
>> powinno sie uruchomic myslenie
>
>ciekawe czy autor tej "mundro?ci" stoje j? do siebie samego kiedy
>pisze np.:
>
>>>tylko pisze "to jest belkot"
>>>Taki mam zwyczaj
>
>i wysy?a ludzi do KF, do googla lub bezcermonialnie i bez
>dyskusji/wja?nie? klasyfikuje ( jak to sie? neuronowa :-) )
>kogo? lub co? jako "be?kot" lub jeszcze dobitniej ..
Idziesz do KF za przytyki personalne
A.L.
>
-
63. Data: 2009-05-18 21:07:09
Temat: Re: jak napisa szybki program
Od: "jelen" <j...@n...rykowisku>
Użytkownik "A.L." <a...@a...com> napisał w wiadomości
news:sui315tl1vpg2joq61iojcf4kga9q9tjm8@4ax.com...
> On Mon, 18 May 2009 21:47:14 +0200, "jelen" <j...@n...rykowisku>
> wrote:
>
>>
>>U?ytkownik "A.L." <a...@a...com> napisa? w wiadomo?ci
>>news:1f63155hoq26am5o4ls42d28s5bveolmt8@4ax.com...
>>> On Mon, 18 May 2009 18:15:31 +0100, "Mateusz Loskot"
>>..
>>> kazdy nawyk jest dobry dopoki nei jest zatosowany w sytuacji w ktorej
>>> powinno sie uruchomic myslenie
>>
...
>
> Idziesz do KF za przytyki personalne
bardzo dziękuję
już się bałem ,że zacząłeś myśleć czy cuś -
ale wygląda , że ze starości - jak zdarta płyta gramofonowa,
czasem się tylko zacinasz
-
64. Data: 2009-05-18 21:12:51
Temat: Re: jak napisać szybki program
Od: Marteno Rodia <m...@o...pl>
Dziękuję wszystkim za podjęcie tak zażartej i intrygującej dyskusji.
Nie wszystko rozumiem, ale wierzę, że dla wielu jest ona pod niejednym
względem pouczająca ;) A teraz poważnie...
Zadając pytanie, nie miałem na myśli jakiejś optymalizacji pełną gębą,
tylko raczej interesowała mnie kwestia pewnych praktyk (tj. nawyków -
sic!) programistycznych: jakie konstrukcje wykonują się szybciej, a
jakie wolniej - np. rzeczony dylemat ++var vs.var++, albo co jest
szybsze: int array[10] czy int *array = new int[10]. Czyli pytałem
trochę o elementarz, którego mi brakuje (bo jak już to udało mi się
nadmienić: nie jestem programistą...). W obu alternatywach zdaje mi
się, że wiem: szybsza jest instrukcja pierwsza (z dokładnością do
optymalizacji dokonanej przez kompilator), ale... może się mylę, a
poza tym może są jeszcze inne sytuacje, gdzie można coś napisać na 2
sposoby, z których jeden jest lepszy (pod kątem czasu wykonania
programu) niż drugi.
Jeżeli ktoś ma coś do wrzucenia na ten temat jeszcze, to chętnie
przeczytam, ale najwcześniej jutro. Dobranoc!
MR
-
65. Data: 2009-05-18 21:28:24
Temat: Re: jak napisać szybki program
Od: A.L. <a...@a...com>
On Mon, 18 May 2009 14:12:51 -0700 (PDT), Marteno Rodia
<m...@o...pl> wrote:
>Dziękuję wszystkim za podjęcie tak zażartej i intrygującej dyskusji.
>Nie wszystko rozumiem, ale wierzę, że dla wielu jest ona pod niejednym
>względem pouczająca ;) A teraz poważnie...
>
>Zadając pytanie, nie miałem na myśli jakiejś optymalizacji pełną gębą,
>tylko raczej interesowała mnie kwestia pewnych praktyk (tj. nawyków -
>sic!) programistycznych: jakie konstrukcje wykonują się szybciej, a
>jakie wolniej - np. rzeczony dylemat ++var vs.var++, albo co jest
>szybsze: int array[10] czy int *array = new int[10].
A co za roznica?...
>Czyli pytałem
>trochę o elementarz, którego mi brakuje (bo jak już to udało mi się
>nadmienić: nie jestem programistą...). W obu alternatywach zdaje mi
>się, że wiem: szybsza jest instrukcja pierwsza (z dokładnością do
>optymalizacji dokonanej przez kompilator), ale... może się mylę, a
>poza tym może są jeszcze inne sytuacje, gdzie można coś napisać na 2
>sposoby, z których jeden jest lepszy (pod kątem czasu wykonania
>programu) niż drugi.
>
>Jeżeli ktoś ma coś do wrzucenia na ten temat jeszcze, to chętnie
>przeczytam, ale najwcześniej jutro. Dobranoc!
>
Proponuje jak zwykla zajrzec do ksiazek, zwlaszcza z serii "Effective
C++" Scotta Meyersa
http://www.aristeia.com/books.html
http://www.informit.com/promotions/promotion.aspx?pr
omo=136685
Poza tym, jak juz ktos pisal: proponuje nie poswiecac zbyt duzo uwagi
optymalizacji programu ani pzred przystapieniem do pisania programu,
ani w trakcie pisania programu. Optymalziacje robi sie wtedy gdy
program dziala zbyt wolno. Ale gdy juz DZIALA.
Rozwazanie takie jak powyzej to dzielenie wlosa na czaoro.
A.L.
-
66. Data: 2009-05-19 07:37:11
Temat: Re: jak napisać szybki program
Od: Paweł Kierski <n...@p...net>
A.L. wrote:
[...]
>> Dana jest zmienna
>>
>> int var = 0;
>>
>> dalej użyta jako licznik w pętli.
>> W celu ziększenia wartości var o 1 mamy kilka możliwości,
>> rozpatrzmy dwie z nich: ++var lub var++.
>>
>> Którą wersję Kolega by wybrał i jak uzasadniłby wybór?
>>
>
> Nie da sie uzasadznic wyboru nie znajac kontekstu w ktorym ta operacja
> jest uzyta.
To trochę jak zakład Newtona - też można twierdzić, że nie da się
uzasadnić wyboru, bo kontekst (istnienie Boga) nie jest znany. Ale
podobnie jak w zakładzie, tak i tu, przyjmujemy rozwiązanie
maksymalizujące zysk.
>> Ja wybrałbym ++var ponieważ 1) przyzwyczajam się do pre-inkrementacji
>> dla liczników/indeksów, a to automatyzuje wybób operatora przy zastosowaniu
>> iteratorów oraz 2) w przypadku gdy zmienię typ zmiennej var z wbudowanego
>> na własny, nie muszę wyszukiwać i zmieniać użycia operatorów, bo wiem
>> iż konsekwentnie używałem pre-inkrementacji.
>>
>> Czy Kolegi zdaniem, nawyki opisane w 1 i 2 są dobre czy "dobre" ?
>> Jeśli zdaniem Kolego są one "dobre", to proszę o wyjaśnienie dlaczego nie są
>> dobre.
>>
>
> kazdy nawyk jest dobry dopoki nei jest zatosowany w sytuacji w ktorej
> powinno sie uruchomic myslenie
To piszemy konsekwentnie od początku: ++i nie zastąpi i++ tam, gdzie
wymagane jest i++.
--
Paweł Kierski
n...@p...net
-
67. Data: 2009-05-19 08:32:45
Temat: Re: jak napisać szybki program
Od: Jędrzej Dudkiewicz <j...@g...com>
Maciej Sobczak wrote:
> On 18 Maj, 13:47, Jędrzej Dudkiewicz <j...@g...com>
> wrote:
>> Maciej Sobczak wrote:
>
>>> Nadal chciałbym wiedzieć dlaczego.
>> Ponieważ dane są pobierane równolegle z wykonaniem programu.
>
> Pod warunkiem, że program ma coś do zrobienia co nie wymaga czekania
> na te dane.
> Czyli mówimy *w ogólności* o wykorzystaniu *współbieżności* w celu
> lepszego wykorzystania zasobów.
No dobra, ale sprawdź jeszcze raz odpowiedź Wojtka Muły, podał
informację o AIO w momencie, kiedy było wiadomo, że:
a) same obliczenia długo trwają
b) dużo czasu zajmuje czekanie na dane.
Wniosek: jest szansa, że AIO pomoże.
W tym momencie odpowiedź "możesz użyć współbieżności" jest mniej pomocne
od konkretniejszego rozwiązania, czyli podania hasła o asynchronicznym I/O.
JD
-
68. Data: 2009-05-19 09:34:53
Temat: Re: jak napisać szybki program
Od: "Mateusz Loskot" <m...@l...net>
"A.L." <a...@a...com> wrote in message
news:1f63155hoq26am5o4ls42d28s5bveolmt8@4ax.com...
> On Mon, 18 May 2009 18:15:31 +0100, "Mateusz Loskot"
> <m...@l...net> wrote:
>
>>"A.L." <a...@a...com> wrote in message
>>news:ti4315lppo0dg90vvabkugm4fgf1s93mhi@4ax.com...
>>> On Mon, 18 May 2009 17:28:34 +0100, "Mateusz Loskot"
>>> <m...@l...net> wrote:
>>>
>>>>
>>>>
>>>>Wszystko co Kolega pisze jest gleboko sluszne, jednak moim zdaniem
>>>>stosowanie notacji prefiksowej, zarówno w odniesieniu do
>>>>typów użytkownika jak i typów wbudowany jest dobrym nawykiem.
>>>>Oczywiście tam gdzie jest to poprawnie użyte dla danego algorytmu.
>>>
>>> Pozwole sie nie zgodzic. Nie ma nic gorszego nie "dobre nawyki".
>>
>>IMHO, to jest uogólnienie.
>>
>>> Zwlaszcza nieuzasadnione
>>
>
> Dlatego nie lubie "nawykow" bo nawyki eliminuja myslenie, a czasem
> moga stanowiac zagrozenie dla zdrowia. Jeden moj znajomy mial nawyk
> jezedenia pzrez most i nie zauwazyl ze nawierzchnie mosy zdjeli do
> remontu. Gdyby myslal zamiast miec nawyki, to by sie nie utopil
Zgoda, nawyk jest zly jesli zwalnia od myslenia.
Moze powinienem ująć to inaczej - w moim coding style preferuję ++var
dla typów dla których ta operacja jest zdefiniowana i w takich konstrukcjach
pętle for i while do zwiększenia wartości/pozycji liczników, wskaźników i
iteratorów o jeden.
>>Dana jest zmienna
>>
>>int var = 0;
>>
>>dalej użyta jako licznik w pętli.
>>W celu ziększenia wartości var o 1 mamy kilka możliwości,
>>rozpatrzmy dwie z nich: ++var lub var++.
>>
>>Którą wersję Kolega by wybrał i jak uzasadniłby wybór?
>>
>
> Nie da sie uzasadznic wyboru nie znajac kontekstu w ktorym ta operacja
> jest uzyta.
Ano właśnie. Ja nie podałem szczegółów kontekstów a mimo to Kolega
potrafił wyrazić krytykę, rozumiem że uzasadnioną i o to uzasadnienie
prosiłem.
Przyjmuję, że "nawyki eliminuja myslenie" jest tym uzasadnieniem. Zgadzam
sie z nim.
>>Ja wybrałbym ++var ponieważ 1) przyzwyczajam się do pre-inkrementacji
>>dla liczników/indeksów, a to automatyzuje wybób operatora przy
>>zastosowaniu
>>iteratorów oraz 2) w przypadku gdy zmienię typ zmiennej var z wbudowanego
>>na własny, nie muszę wyszukiwać i zmieniać użycia operatorów, bo wiem
>>iż konsekwentnie używałem pre-inkrementacji.
>>
>>Czy Kolegi zdaniem, nawyki opisane w 1 i 2 są dobre czy "dobre" ?
>>Jeśli zdaniem Kolego są one "dobre", to proszę o wyjaśnienie dlaczego nie
>>są
>>dobre.
>>
>
> kazdy nawyk jest dobry dopoki nei jest zatosowany w sytuacji w ktorej
> powinno sie uruchomic myslenie
Pełna zgoda.
Pozdrawiam
--
Mateusz Loskot, http://mateusz.loskot.net
pl.comp.lang.c FAQ: http://pl.cpp.wikia.com/wiki/FAQ
C++ FAQ: http://parashift.com/c++-faq-lite
-
69. Data: 2009-05-19 09:48:48
Temat: Re: jak napisać szybki program
Od: "Mateusz Loskot" <m...@l...net>
"Marteno Rodia" <m...@o...pl> wrote in message
news:60d2054e-875f-464e-b723-553eaa97d168@m24g2000vb
p.googlegroups.com...
>
> albo co jest szybsze: int array[10] czy int *array = new int[10].
Pierwsze to alokacja na stosie, drugie na tzw. stercie (dynamic storage)
Ogólna zasada przy optymalizacji, to im mniej alokacji pamięci
tym lepiej. Alokacja to wolna operacja.
Polecam poszperać po archiwach tej grupy oraz FAQ'ach,
linki w mojej stopce.
Pozdrawiam
--
Mateusz Loskot, http://mateusz.loskot.net
pl.comp.lang.c FAQ: http://pl.cpp.wikia.com/wiki/FAQ
C++ FAQ: http://parashift.com/c++-faq-lite
-
70. Data: 2009-05-19 09:50:29
Temat: Re: jak napisać szybki program
Od: "Mateusz Loskot" <m...@l...net>
"Piotr Kulinski" <p...@w...pl> wrote in message
news:z5n0vdd3lspg$.pgn6aqhxqfhq$.dlg@40tude.net...
> Mon, 18 May 2009 18:15:31 +0100, na pl.comp.programming, Mateusz Loskot
> napisał(a):
>
>> "A.L." <a...@a...com> wrote in message
>> news:ti4315lppo0dg90vvabkugm4fgf1s93mhi@4ax.com...
>>> On Mon, 18 May 2009 17:28:34 +0100, "Mateusz Loskot"
>>> <m...@l...net> wrote:
>>>
>>>>
>>>>
>>>>Wszystko co Kolega pisze jest gleboko sluszne, jednak moim zdaniem
>>>>stosowanie notacji prefiksowej, zarówno w odniesieniu do
>>>>typów użytkownika jak i typów wbudowany jest dobrym nawykiem.
>>>>Oczywiście tam gdzie jest to poprawnie użyte dla danego algorytmu.
>>>
>>> Pozwole sie nie zgodzic. Nie ma nic gorszego nie "dobre nawyki".
>>
>> IMHO, to jest uogólnienie.
>>
>>> Zwlaszcza nieuzasadnione
>>
>> Dana jest zmienna
>>
>> int var = 0;
>>
>> dalej użyta jako licznik w pętli.
>> W celu ziększenia wartości var o 1 mamy kilka możliwości,
>> rozpatrzmy dwie z nich: ++var lub var++.
>>
>> Którą wersję Kolega by wybrał i jak uzasadniłby wybór?
>>
>> Ja wybrałbym ++var ponieważ 1) przyzwyczajam się do pre-inkrementacji
>> dla liczników/indeksów, a to automatyzuje wybób operatora przy
>> zastosowaniu
>> iteratorów oraz 2) w przypadku gdy zmienię typ zmiennej var z wbudowanego
>> na własny, nie muszę wyszukiwać i zmieniać użycia operatorów, bo wiem
>> iż konsekwentnie używałem pre-inkrementacji.
>>
> czy przypadek 1 czy 2 to zależy od dalszego kontekstu programu
Zgadza się, dlatego zaznaczyłem w 1 że chodzi o zwiększenie licznika
pętli o jeden, nie dodałem że z jednoczesnym przypisaniem starej/nowej
wartości innej zmiennej, etc.
> bardzo dobry przykład, podałeś AL
> int var = 0;
> int i=0;
>
> /*1*/ i=var++; //i=0
> lub
> /*2*/ i=++var; //i=1
>
> ... więc wszystko zależy od dalszego kontekstu.
Zgoda pełna.
Pozdrawiam
--
Mateusz Loskot, http://mateusz.loskot.net
pl.comp.lang.c FAQ: http://pl.cpp.wikia.com/wiki/FAQ
C++ FAQ: http://parashift.com/c++-faq-lite