eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingdalsza optymalizacja
Ilość wypowiedzi w tym wątku: 55

  • 41. Data: 2012-04-02 15:00:49
    Temat: Re: dalsza optymalizacja
    Od: bartekltg <b...@g...com>

    W dniu 2012-04-02 14:58, bartekltg pisze:
    > metodą eliminacji (jak ona się po angielsku nazywa?)

    Mam:

    http://en.wikipedia.org/wiki/Rejection_sampling

    pzdr
    bartekltg


  • 42. Data: 2012-04-02 15:22:06
    Temat: Re: dalsza optymalizacja
    Od: " M.M." <m...@N...gazeta.pl>

    <f...@N...gazeta.pl> napisał(a):

    > > - za drugim razem odwrotnie - nie inty i floaty zdaja sie
    > > najwiekszym problemem tylko konwersje z float na int
    > > (defakto jest to bug spolki fpu+kompilatory)
    > >
    >
    > testy u mnie na starym p4
    >
    >
    > for(int i=0; i<100000000; i++)
    > {
    > // int_ = (int) i; // 140 ms
    >
    > //int_ = i * 80; // 180 ms
    > // int_ = i/40 ; // 2500 ms
    >
    > // float_ = (float) i; // 230 ms
    >
    > // float_ = ((float) i/ (i+23)); // 1800
    > // float_ = sqrt(float(i) ); // 2300
    > // float_ = cos(float(i) ); // 9600
    > // float_ = ((float) i/ 3.3345); // 420
    > // float_ = (float) i * float(i); // 350
    >
    > // int_ = (float) i; // 6900 ms
    >
    > }
    >
    > konwersja floata na int kosztuje tyle co kilka dzielen, i tyle co


    A u mnie ten program skompilowany GCC z O2 nie kończy się:

    int main( int argc, char *argv[] ) {
    clock_t start = clock();
    int t = 0;
    for( int i=0 ; i<30000 ; i++ )
    for( int i=0 ; i<10000 ; i++ )
    t += i;
    printf("%dms\n%lf\n", (int)((clock()-start)*1000/CLOCKS_PER_SEC) , (double)t );
    return 0;
    }

    Zwykle (chyba nigdy) nie używam takich samych nazw zmiennych dla pętli
    zagnieżdżonej co obejmującej. Ale myślałem że to poprawny kod...

    Pozdrawiam


    --
    Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/


  • 43. Data: 2012-04-02 15:55:04
    Temat: Re: dalsza optymalizacja
    Od: " M.M." <m...@N...gazeta.pl>

    M.M. <m...@N...gazeta.pl> napisał(a):

    > <f...@N...gazeta.pl> napisał(a):
    >
    > > > - za drugim razem odwrotnie - nie inty i floaty zdaja sie
    > > > najwiekszym problemem tylko konwersje z float na int
    > > > (defakto jest to bug spolki fpu+kompilatory)
    > > >
    > >
    > > testy u mnie na starym p4
    > >
    > >
    > > for(int i=0; i<100000000; i++)
    > > {
    > > // int_ = (int) i; // 140 ms
    > >
    > > //int_ = i * 80; // 180 ms
    > > // int_ = i/40 ; // 2500 ms
    > >
    > > // float_ = (float) i; // 230 ms
    > >
    > > // float_ = ((float) i/ (i+23)); // 1800
    > > // float_ = sqrt(float(i) ); // 2300
    > > // float_ = cos(float(i) ); // 9600
    > > // float_ = ((float) i/ 3.3345); // 420
    > > // float_ = (float) i * float(i); // 350
    > >
    > > // int_ = (float) i; // 6900 ms
    > >
    > > }
    > >
    > > konwersja floata na int kosztuje tyle co kilka dzielen, i tyle co
    >
    >
    > A u mnie ten program skompilowany GCC z O2 nie kończy się:
    A z typem float już działa. Co jest grane?

    int main( int argc, char *argv[] ) {
    clock_t start = clock();
    float t = 0;
    for( int i=0 ; i<30000 ; i++ )
    for( int i=0 ; i<10000 ; i++ )
    t += i;
    printf( "%dms\n%lf\n" , (int)((clock()-start)*1000/CLOCKS_PER_SEC) , (double)t );
    return 0;
    }



    --
    Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/


  • 44. Data: 2012-04-02 16:16:14
    Temat: Re: dalsza optymalizacja
    Od: bartekltg <b...@g...com>

    W dniu 2012-04-02 15:55, M.M. pisze:


    > int main( int argc, char *argv[] ) {
    > clock_t start = clock();
    > float t = 0;
    > for( int i=0 ; i<30000 ; i++ )
    > for( int i=0 ; i<10000 ; i++ )
    > t += i;
    > printf( "%dms\n%lf\n" ,
    > (int)((clock()-start)*1000/CLOCKS_PER_SEC) , (double)t );
    > return 0;
    > }


    >> A u mnie ten program skompilowany GCC z O2 nie kończy się:
    > A z typem float już działa. Co jest grane?
    >

    Działa poprawnie w obu wersjach (VC++ 2010).
    Deklaracja int i w wewnętrznej pętli nadpisuje
    poprzednie 'i'. W wyplutym asm widać, że to różne zmienne.

    pzdr
    bartekltg


  • 45. Data: 2012-04-02 17:11:40
    Temat: Re: dalsza optymalizacja
    Od: " M.M." <m...@N...gazeta.pl>

    bartekltg <b...@g...com> napisał(a):

    > W dniu 2012-04-02 15:55, M.M. pisze:
    >
    >
    > > int main( int argc, char *argv[] ) {
    > > clock_t start = clock();
    > > float t = 0;
    > > for( int i=0 ; i<30000 ; i++ )
    > > for( int i=0 ; i<10000 ; i++ )
    > > t += i;
    > > printf( "%dms\n%lf\n" ,
    > > (int)((clock()-start)*1000/CLOCKS_PER_SEC) , (double)t );
    > > return 0;
    > > }
    >
    >
    > >> A u mnie ten program skompilowany GCC z O2 nie kończy się:
    > > A z typem float już działa. Co jest grane?
    > >
    >
    > Działa poprawnie w obu wersjach (VC++ 2010).
    > Deklaracja int i w wewnętrznej pętli nadpisuje
    > poprzednie 'i'. W wyplutym asm widać, że to różne zmienne.

    W wewnętrznej pętli zmienną oznaczyłem symbolem "j" i też
    nie zatrzymuje się. Mój GCC ma znowu jakiegoś buga :(

    Przypominam sobie że w jakimś starszym VC był podobny
    problem. Jeśli w prostych programach używało się printf z
    konwersją typu stałoprzecinkowego do typu zmiennoprzecinkowego
    to skompilowany program potrafił wywalić NT4.0.

    Pozdrawiam


    --
    Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/


  • 46. Data: 2012-04-02 17:31:16
    Temat: Re: dalsza optymalizacja
    Od: Michoo <m...@v...pl>

    On 02.04.2012 17:11, M.M. wrote:
    > W wewnętrznej pętli zmienną oznaczyłem symbolem "j" i też
    > nie zatrzymuje się. Mój GCC ma znowu jakiegoś buga :(
    4.6? Kompilowane z 02?
    Dump of assembler code for function main:
    0x08048380 <+0>: push ebp
    0x08048381 <+1>: mov ebp,esp
    0x08048383 <+3>: and esp,0xfffffff0
    0x08048386 <+6>: call 0x804836c <clock@plt>
    0x0804838b <+11>: jmp 0x804838b <main+11>
    End of assembler dump.

    Wygląda na to, że optymalizator doszedł do wniosku, że to pętla
    nieskończona....


    --
    Pozdrawiam
    Michoo


  • 47. Data: 2012-04-02 18:25:23
    Temat: Re: dalsza optymalizacja
    Od: bartekltg <b...@g...com>

    W dniu 2012-04-02 17:31, Michoo pisze:
    > On 02.04.2012 17:11, M.M. wrote:
    >> W wewnętrznej pętli zmienną oznaczyłem symbolem "j" i też
    >> nie zatrzymuje się. Mój GCC ma znowu jakiegoś buga :(

    Dla for i for j? Coś nie wierzę, przreciez połowa programów
    by nie działała;)

    > 4.6? Kompilowane z 02?
    > Dump of assembler code for function main:
    > 0x08048380 <+0>: push ebp
    > 0x08048381 <+1>: mov ebp,esp
    > 0x08048383 <+3>: and esp,0xfffffff0
    > 0x08048386 <+6>: call 0x804836c <clock@plt>
    > 0x0804838b <+11>: jmp 0x804838b <main+11>
    > End of assembler dump.

    To dla wersji z dwoma 'int i'czy jednym 'j' i jednym 'i'?

    >
    > Wygląda na to, że optymalizator doszedł do wniosku, że to pętla
    > nieskończona....
    >
    >

    :)

    W sumie widząc to
    >> for( int i=0 ; i<30000 ; i++ )
    >> for( int i=0 ; i<10000 ; i++ )
    >> t += i;

    też moja pierwsza myśl była taka, że wewnętrzna
    pętla 'resetuje' i do wartości 10000.

    I tak by było, gdyby zniknać 'int':

    for( int i=0 ; i<30000 ; i++ )
    for( i=0 ; i<10000 ; i++ )
    t += i;


    pzdr
    bartekltg



  • 48. Data: 2012-04-02 18:30:21
    Temat: Re: dalsza optymalizacja
    Od: " M.M." <m...@N...gazeta.pl>

    Michoo <m...@v...pl> napisał(a):

    > On 02.04.2012 17:11, M.M. wrote:
    > > W wewnętrznej pętli zmienną oznaczyłem symbolem "j" i też
    > > nie zatrzymuje się. Mój GCC ma znowu jakiegoś buga :(
    > 4.6? Kompilowane z 02?
    gcc --version
    gcc (Ubuntu/Linaro 4.6.1-9ubuntu3) 4.6.1

    Pozdrawiam


    --
    Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/


  • 49. Data: 2012-04-02 18:47:42
    Temat: Re: dalsza optymalizacja
    Od: Michoo <m...@v...pl>

    On 02.04.2012 17:31, Michoo wrote:
    > On 02.04.2012 17:11, M.M. wrote:
    >> W wewnętrznej pętli zmienną oznaczyłem symbolem "j" i też
    >> nie zatrzymuje się. Mój GCC ma znowu jakiegoś buga :(
    > 4.6? Kompilowane z 02?
    > Wygląda na to, że optymalizator doszedł do wniosku, że to pętla
    > nieskończona....
    I co ciekawe kod wynikowy jest zgodny ze standardem - występuje integer
    overflow a ten jest niezdefiniowany. Co równie ciekawe zmiana t na
    unsigned pomaga.


    --
    Pozdrawiam
    Michoo


  • 50. Data: 2012-04-02 18:49:11
    Temat: Re: dalsza optymalizacja
    Od: " M.M." <m...@N...gazeta.pl>

    bartekltg <b...@g...com> napisał(a):

    > W dniu 2012-04-02 17:31, Michoo pisze:
    > > On 02.04.2012 17:11, M.M. wrote:
    > >> W wewnętrznej pętli zmienną oznaczyłem symbolem "j" i też
    > >> nie zatrzymuje się. Mój GCC ma znowu jakiegoś buga :(
    >
    > Dla for i for j? Coś nie wierzę, przreciez połowa programów
    > by nie działała;)

    Tak, dla for i for j. Jump L2.


    .file "main.cpp"
    .section .text.startup,"ax",@progbits
    .p2align 4,,15
    .globl main
    .type main, @function
    main:
    LFB186:
    .cfi_startproc
    subq $8, %rsp
    .cfi_def_cfa_offset 16
    call clock
    L2:
    jmp .L2
    .cfi_endproc
    LFE186:
    .size main, .-main
    .globl _ZN3Rnd1rE
    .data
    .align 32
    .type _ZN3Rnd1rE, @object
    .size _ZN3Rnd1rE, 40
    _ZN3Rnd1rE:
    .long 63
    .long 50
    .long 32
    .long 63
    .long 39
    .long 8
    .long 63
    .long 58
    .long 46
    .zero 4
    .globl _ZN3Rnd3rs3E
    .align 32
    .type _ZN3Rnd3rs3E, @object
    .size _ZN3Rnd3rs3E, 512
    _ZN3Rnd3rs3E:
    .quad -8583724644448515302
    .quad 7118157242084845153
    .quad -3282035833359768471
    .quad 4346947973150984197
    .quad -3929522514844609824
    .quad 829481848689055244
    .quad -2104460281609201944
    .quad -2247723057926822712
    .quad 4194831370794858102
    .quad 5929313499994457578
    .quad 5581729070166788065
    .quad 8372386835039800014
    .quad 2168335662247944285
    .quad 1351438425912490887
    .quad 4285818071787741563
    .quad -4081570387039520142
    .quad 7536839331681093691
    .quad -6661290185539005052
    .quad 2320359185900136656
    .quad 1978632313520600862
    .quad 4096962062831933036
    .quad -4379665411168832383
    .quad 6419629484951263525
    .quad 5442636310441946310
    .quad -5938816598903974254
    .quad -3072092875946571554
    .quad 8737901174932084416
    .quad 4856022269066779686
    .quad 4410032091286610354
    .quad -6534115865556383487
    .quad -6239266390217274880
    .quad 8233486917874592796
    .quad -4818444580511150026
    .quad 4351225903379661076
    .quad -8197448328801389939
    .quad 6407973851176086916
    .quad -4826552549406363459
    .quad 5289732182092858929
    .quad 4044552581888452619
    .quad -6648026004256145272
    .quad 9139038670684978875
    .quad -7864399055233553431
    .quad -7150760817394149612
    .quad 8623929595382249447
    .quad 4046726470009264587
    .quad -8621733354270393560
    .quad 1202746375481887784
    .quad -1996568905897833774
    .quad 5949265124488304461
    .quad 2063128244095609051
    .quad -3574403524654800476
    .quad -6563829544703753933
    .quad -3808876325438115528
    .quad 605667614856985814
    .quad -8268592510173211443
    .quad 6596676749517440068
    .quad -7881761263568887648
    .quad 4053830907523517990
    .quad -4193352110664377678
    .quad 8270676242585114144
    .quad 4737251907470449802
    .quad 3176667505079447923
    .quad 1990788022588220363
    .quad 6653156474319876756
    .globl _ZN3Rnd3rs2E
    .align 32
    .type _ZN3Rnd3rs2E, @object
    .size _ZN3Rnd3rs2E, 512
    _ZN3Rnd3rs2E:
    .quad 1505854449413168733
    .quad 4961915066344104122
    .quad -4043055326178168198
    .quad 8468096795144173789
    .quad 1395069483638033818
    .quad 8950357676976113932
    .quad 4046446312871236328
    .quad 6583745139183798440
    .quad 7784526354135551398
    .quad -7914040229563054718
    .quad -2104824188792047726
    .quad 4728371537881850300
    .quad 7095207139894232681
    .quad 2070981434591269894
    .quad 28520364960727490
    .quad 4049619075152921107
    .quad -2773744526701786687
    .quad -7456467237954964962
    .quad -5425242764239979081
    .quad 1444060903544076490
    .quad 330118002194748599
    .quad 6214418995424186498
    .quad 2529740036692403052
    .quad 6262039890822021197
    .quad -2054809411179039359
    .quad -2930421477413341315
    .quad -5102492181546043037
    .quad -5014973046894434476
    .quad -5430653906115856448
    .quad 6538234763906016820
    .quad 3305058296915122624
    .quad 98169322383862545
    .quad -3950646620094187184
    .quad -5043251609832507826
    .quad 1670423875712114924
    .quad -8870256849461234044
    .quad 1525828335576862440
    .quad -8198933659884409538
    .quad 2751259690180350230
    .quad 8690562136283960097
    .quad -4124273106309537244
    .quad 8543779101341686614
    .quad -8020398858434059445
    .quad 1763458522807172839
    .quad 3939906178899340610
    .quad -2032238322041086713
    .quad 7326490562108554774
    .quad -2844334450886252424
    .quad 7693977951473702737
    .quad 2419930437037329305
    .quad 6351423274105881956
    .quad -6041442059361700000
    .quad 2916666279466014900
    .quad 8135115382024056398
    .quad 1179539879136542360
    .quad -6628022847909350618
    .quad 6066969072850457113
    .quad 7046280836833097610
    .quad 4437009337959259453
    .quad -4847775588596667468
    .quad 7645401406929720878
    .quad 6172028636179532590
    .quad -7117581516364488061
    .quad -1439558763525937193
    .globl _ZN3Rnd3rs1E
    .align 32
    .type _ZN3Rnd3rs1E, @object
    .size _ZN3Rnd3rs1E, 512
    _ZN3Rnd3rs1E:
    .quad -1438646000516783171
    .quad 5419120948381837081
    .quad 7749806717758046827
    .quad -3589876829590713310
    .quad -2488404680947155487
    .quad -3054798282951175775
    .quad -6744042199835749509
    .quad 1650715883746497548
    .quad -5741897883825099307
    .quad 3500177734335488163
    .quad 3162255476687644029
    .quad 4366664397910865530
    .quad 2978506469962796109
    .quad 8721037942403066172
    .quad 2005027041283726567
    .quad 4154635062663192616
    .quad 1588557737301758664
    .quad -8909981318851982234
    .quad 8823052911510274523
    .quad 4461801726849321768
    .quad -5482995873963886362
    .quad -3836036263463338396
    .quad -6299312877209171085
    .quad 1467018588398869605
    .quad 1623342643330316372
    .quad -5051134097652281269
    .quad -9216163978780700986
    .quad -1651482624259372890
    .quad 1947474159638766059
    .quad 7148067428821079985
    .quad 5994539789183258002
    .quad -5649395634497620757
    .quad 2149393019965753138
    .quad -7998368239332985783
    .quad -5309300234032258740
    .quad 2325777404849981093
    .quad -4015111275523742270
    .quad 2983334429748030370
    .quad -7315490570718974864
    .quad 1837843891603207445
    .quad 4618100832107105398
    .quad 5392343219810591469
    .quad 3812946107873697401
    .quad 8840991501124673060
    .quad 8887547788582802987
    .quad -7540368994943102539
    .quad -8514974619407874040
    .quad -8690947781720310809
    .quad -8251400146342002633
    .quad -3713302494113414338
    .quad -6096165168327923815
    .quad 3776676776074650601
    .quad 3354451566079969350
    .quad -8280968836484477750
    .quad 5559348035844717751
    .quad 341019700413259991
    .quad 2195056349914491019
    .quad 7864904709204497031
    .quad 6629887059143915428
    .quad -4550379407851733727
    .quad 6384770812713745968
    .quad 6609390440428867917
    .quad 9121902816993063318
    .quad 3857427041121145553
    .ident "GCC: (Ubuntu/Linaro 4.6.1-9ubuntu3) 4.6.1"
    .section .note.GNU-stack,"",@progbits


    --
    Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/

strony : 1 ... 4 . [ 5 ] . 6


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: