eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingminmax(a,b,c) › Re: minmax(a,b,c)
  • X-Received: by 10.49.85.2 with SMTP id d2mr556509qez.9.1386245900150; Thu, 05 Dec
    2013 04:18:20 -0800 (PST)
    X-Received: by 10.49.85.2 with SMTP id d2mr556509qez.9.1386245900150; Thu, 05 Dec
    2013 04:18:20 -0800 (PST)
    Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!news.cyf-kr.edu.pl!news.nask
    .pl!news.nask.org.pl!newsfeed.pionier.net.pl!news.glorb.com!p15no5623697qaj.0!n
    ews-out.google.com!9ni1174qaf.0!nntp.google.com!bm17no13958118qab.0!postnews.go
    ogle.com!glegroupsg2000goo.googlegroups.com!not-for-mail
    Newsgroups: pl.comp.programming
    Date: Thu, 5 Dec 2013 04:18:19 -0800 (PST)
    In-Reply-To: <a...@g...com>
    Complaints-To: g...@g...com
    Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=5.184.107.52;
    posting-account=Sb6m8goAAABbWsBL7gouk3bfLsuxwMgN
    NNTP-Posting-Host: 5.184.107.52
    References: <5...@g...com>
    <l7nqcc$q5f$1@node2.news.atman.pl>
    <5...@g...com>
    <l7nt2e$so1$1@node2.news.atman.pl>
    <5...@g...com>
    <l7o5nr$5v8$1@node2.news.atman.pl>
    <7...@g...com>
    <l7oijc$ilg$1@node2.news.atman.pl>
    <a...@g...com>
    User-Agent: G2/1.0
    MIME-Version: 1.0
    Message-ID: <6...@g...com>
    Subject: Re: minmax(a,b,c)
    From: firr <p...@g...com>
    Injection-Date: Thu, 05 Dec 2013 12:18:20 +0000
    Content-Type: text/plain; charset=ISO-8859-1
    Content-Transfer-Encoding: quoted-printable
    Xref: news-archive.icm.edu.pl pl.comp.programming:204769
    [ ukryj nagłówki ]

    >
    > co prawda chyba raczej powinno sie liczyc nie sumarycznie a po danej sciezce
    wykonania ale
    >
    > z tego co sie slyszy liczy sie tez chyba ilosc
    >
    > missów, tak czy owak ten kod ktory zminimalizowal
    >
    > ilosc skokow do 2 jak dla mnie akurat wyglada tutaj calkiem dobrze
    >
    >
    >
    > ciekawe czy dalo by sie to recznie np z uzyciem
    >
    > wlasnie bezifowców jeszcze to skompaktowac do jednego lub zero jumpow


    ten kod wlasnie jest dosyc zoptymalizowany

    //input ints eax ebx edx
    // output eax: min, ebx:- max

    cmp edx, eax
    jg L1
    swap edx, eax //here three movs for swap (*)
    L1:
    cmp ebx, edx
    jg L2
    cmp eax, ebx
    cmovg eax, ebx
    mov ebx, edx
    L2:

    sprawdzilem i sie zgadza, jest to dosyc
    pouczajace jako przyklad jak mozna optymalizowac
    takie coc

    co do wersji z samych cmovow to ktos podal
    przyklad

    void compute_min_max(int &min, int &max, int x, int y, int z) {
    min = x < y ? x : y;
    max = x > y ? x : y;
    min = min < z ? min : z;
    max = max > z ? max : z;
    }

    It produces this assembly code (clang-500.2.76 with -O3):

    .globl __Z15compute_min_maxRiS_iii
    .align 4, 0x90
    __Z15compute_min_maxRiS_iii: ## @_Z15compute_min_maxRiS_iii
    .cfi_startproc
    ## BB#0:
    pushq %rbp
    Ltmp2:
    .cfi_def_cfa_offset 16
    Ltmp3:
    .cfi_offset %rbp, -16
    movq %rsp, %rbp
    Ltmp4:
    .cfi_def_cfa_register %rbp
    cmpl %ecx, %edx
    movl %ecx, %eax
    cmovlel %edx, %eax
    movl %eax, (%rdi)
    cmovgel %edx, %ecx
    movl %ecx, (%rsi)
    movl (%rdi), %eax
    cmpl %r8d, %eax
    cmovgl %r8d, %eax
    movl %eax, (%rdi)
    movl (%rsi), %eax
    cmpl %r8d, %eax
    cmovgel %eax, %r8d
    movl %r8d, (%rsi)
    popq %rbp
    ret
    .cfi_endproc

    ciezko powiedziec bez testu ktora wersja szybsza
    - na razie nie moge przetestowac moze kiedys posniej

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

  • 05.12.13 13:42 firr
  • 05.12.13 15:07 firr
  • 06.12.13 13:07 firr
  • 06.12.13 13:15 firr
  • 07.12.13 16:16 firr

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: