-
Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.
atman.pl!goblin2!goblin.stu.neva.ru!feeder1.cambriumusenet.nl!feed.tweaknews.nl
!209.197.12.246.MISMATCH!nx02.iad01.newshosting.com!newshosting.com!69.16.185.2
1.MISMATCH!npeer03.iad.highwinds-media.com!news.highwinds-media.com!feed-me.hig
hwinds-media.com!postnews.google.com!k21g2000vbn.googlegroups.com!not-for-mail
From: bartekltg <b...@g...com>
Newsgroups: pl.comp.programming
Subject: Re: normalize na fpu
Date: Mon, 13 Aug 2012 06:31:26 -0700 (PDT)
Organization: http://groups.google.com
Lines: 85
Message-ID: <a...@k...googlegroups.com>
References: <k07u5f$930$1@inews.gazeta.pl>
NNTP-Posting-Host: 80.54.0.14
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-2
Content-Transfer-Encoding: quoted-printable
X-Trace: posting.google.com 1344864689 924 127.0.0.1 (13 Aug 2012 13:31:29 GMT)
X-Complaints-To: g...@g...com
NNTP-Posting-Date: Mon, 13 Aug 2012 13:31:29 +0000 (UTC)
Complaints-To: g...@g...com
Injection-Info: k21g2000vbn.googlegroups.com; posting-host=80.54.0.14;
posting-account=CvUQzQoAAABvVQmR58QmR6N4Cev1qhAS
User-Agent: G2/1.0
X-HTTP-UserAgent: Mozilla/5.0 (Windows NT 5.1; rv:14.0) Gecko/20100101
Firefox/14.0.1,gzip(gfe)
X-Received-Bytes: 4060
Xref: news-archive.icm.edu.pl pl.comp.programming:199263
[ ukryj nagłówki ]On 12 Sie, 11:48, " kenobi" <f...@g...pl> wrote:
> 90 cykli - i tak szybciej niz to co wyprodukowal moj
> kompiletor (150) [dokladnie nie wiem nawet czemu
> moze przez to ze ta funkcja jest okrojona tj nie
> sprawdza czy nie ma dzielenia przez 0 ;-)
Sprzed której wojny to kompilator?
******
void norm(double &a, double &b, double &c)
{
double dl = sqrt(a*a+b*b+c*c);
a/=dl;
b/=dl;
c/=dl;
}
******
g++ bla.cpp -O2 -S --verbose-asm -g
as -alhnd bla.s > bla.lst
*****
10:bla.cpp **** double dl = sqrt(a*a+b*b+c*c);
61 .loc 1 10 0
62 0004 F20F101F movsd (%rdi), %xmm3 # *a_1(D),
*a_1(D)
63 0008 F20F1016 movsd (%rsi), %xmm2 # *b_5(D),
tmp96
64 000c 660F28C3 movapd %xmm3, %xmm0 # *a_1(D),
tmp82
65 0010 F20F100A movsd (%rdx), %xmm1 # *c_10(D),
tmp94
66 0014 F20F59D2 mulsd %xmm2, %xmm2 # tmp96, tmp96
67 0018 F20F59C3 mulsd %xmm3, %xmm0 # *a_1(D),
tmp82
68 001c F20F59C9 mulsd %xmm1, %xmm1 # tmp94, tmp94
69 0020 F20F58C2 addsd %xmm2, %xmm0 # tmp96, tmp82
70 0024 F20F58C1 addsd %xmm1, %xmm0 # tmp94, tmp82
71 0028 F20F51C8 sqrtsd %xmm0, %xmm1 # tmp82, tmp77
72 002c 660F2EC9 ucomisd %xmm1, %xmm1 # tmp77, tmp77
73 0030 7A25 jp .L6 #,
74 .LVL1:
75 .L2:
11:bla.cpp **** a/=dl;
76 .loc 1 11 0
77 0032 F20F5ED9 divsd %xmm1, %xmm3 # tmp77, tmp88
78 0036 F20F111F movsd %xmm3, (%rdi) # tmp88,
*a_1(D)
12:bla.cpp **** b/=dl;
79 .loc 1 12 0
80 003a F20F1006 movsd (%rsi), %xmm0 # *b_5(D),
tmp90
81 003e F20F5EC1 divsd %xmm1, %xmm0 # tmp77, tmp90
82 0042 F20F1106 movsd %xmm0, (%rsi) # tmp90,
*b_5(D)
13:bla.cpp **** c/=dl;
83 .loc 1 13 0
84 0046 F20F1002 movsd (%rdx), %xmm0 # *c_10(D),
tmp92
85 004a F20F5EC1 divsd %xmm1, %xmm0 # tmp77, tmp92
86 004e F20F1102 movsd %xmm0, (%rdx) # tmp92,
*c_10(D)
87 .LBE2:
14:bla.cpp ****
15:bla.cpp **** }
Na oko wręcz szybciej:)
> chcialbym to poprawic, czy ktos zna jakies zasady
> 'polepszania' takich funkcji ? i moglby zaproponowac
> poprawki?
1. gcc/visual studio.
2. Jakaś wyspecjalizowana biblioteka, jeśli tych obliczeń więcej.
3. Jeśli nie musisz mieć dokładności, to spróbuj to,
http://en.wikipedia.org/wiki/Fast_inverse_square_roo
t#Overview_of_the_code
100 lat temu zastosowanie kilku iteracji Newtona było szybsze niż
sqrt z koprocesora, ale dziś nie musi to być prawdą.
pzdr
bartekltg
Następne wpisy z tego wątku
- 13.08.12 18:08 kenobi
- 13.08.12 18:46 bartekltg
- 13.08.12 19:01 kenobi
- 13.08.12 19:30 bartekltg
- 13.08.12 20:07 Michoo
- 13.08.12 20:24 kenobi
- 13.08.12 22:21 bartekltg
- 13.08.12 22:54 kenobi
Najnowsze wątki z tej grupy
- Grok zaczął nadużywać wulgaryzmów i wprost obrażać niektóre znane osoby
- Can you activate BMW 48V 10Ah Li-Ion battery, connecting to CAN-USB laptop interface ?
- We Wrocławiu ruszyła Odra 5, pierwszy w Polsce komputer kwantowy z nadprzewodzącymi kubitami
- Ada-Europe - AEiC 2025 early registration deadline imminent
- John Carmack twierdzi, że gdyby gry były optymalizowane, to wystarczyły by stare kompy
- Ada-Europe Int.Conf. Reliable Software Technologies, AEiC 2025
- Linuks od wer. 6.15 przestanie wspierać procesory 486 i będzie wymagać min. Pentium
- ,,Polski przemysł jest w stanie agonalnym" - podkreślił dobitnie, wskazując na brak zamówień.
- Rewolucja w debugowaniu!!! SI analizuje zrzuty pamięci systemu M$ Windows!!!
- Brednie w wiki - hasło Dehomag
- Perfidne ataki krakerów z KRLD na skrypciarzy JS i Pajton
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- U nas propagują modę na SI, a w Chinach naukowcy SI po kolei umierają w wieku 40-50lat
Najnowsze wątki
- 2025-07-18 celnicy pobili policjanta
- 2025-07-18 Warszawa => Technik IT - Konfiguracja i Wsparcie Sprzętowe <=
- 2025-07-18 Warszawa => Specjalista ds. Sprzętu IT i Wsparcia Technicznego <=
- 2025-07-18 Białystok => Kotlin Developer <=
- 2025-07-18 Warszawa => Sales Director (Cloud solutions) <=
- 2025-07-18 Spalinowa trauma
- 2025-07-18 Polska => Senior Key Account Manager <=
- 2025-07-18 Białystok => Programista Kotlin <=
- 2025-07-18 Szczecin => Key Account Manager IT <=
- 2025-07-18 Łódź => Programista Mainframe (z/OS, Assembler) <=
- 2025-07-18 Łódź => Mainframe (z/OS, Assembler) Developer <=
- 2025-07-18 Lublin => Delphi Programmer <=
- 2025-07-18 Lublin => Programista Delphi <=
- 2025-07-17 Grok zaczął nadużywać wulgaryzmów i wprost obrażać niektóre znane osoby
- 2025-07-17 Andrzej Duda ułaskawił Roberta Bąkiewicza od zarzutu zapchnięcia ze schodów aktywistki Babci Kasi