-
Data: 2013-12-05 13:18:19
Temat: Re: minmax(a,b,c)
Od: firr <p...@g...com> szukaj wiadomości tego autora
[ pokaż wszystkie 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
Następne wpisy z tego wątku
Najnowsze wątki z tej grupy
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
- CfC 28th Ada-Europe Int. Conf. Reliable Software Technologies
- Młodzi programiści i tajna policja
- Ada 2022 Language Reference Manual to be Published by Springer
Najnowsze wątki
- 2024-10-19 Warszawa => Software Engineer .Net <=
- 2024-10-19 Warszawa => Senior SAP HANA Developer <=
- 2024-10-19 Warszawa => Specjalista Helpdesk <=
- 2024-10-19 PUE ZUS -- administracyjna nuda...
- 2024-10-18 Marsz niepodleglosci
- 2024-10-18 Pożar parkingu w Luton
- 2024-10-18 Łódź => Spedytor Międzynarodowy <=
- 2024-10-18 Gdańsk => Technical Lead ( (Java Background)) <=
- 2024-10-18 Warszawa => Head of International Freight Forwarding Department <=
- 2024-10-18 uwazajmy na haczyki w umowach
- 2024-10-18 Warszawa => Account Manager - Usługi rekrutacyjne <=
- 2024-10-18 Białystok => Full Stack web developer (obszar .Net Core, Angular6+) <
- 2024-10-18 Gdańsk => Software .Net Developer <=
- 2024-10-18 Warszawa => Junior Rekruter <=
- 2024-10-18 Warszawa => Key Account Manager <=