-
Data: 2016-09-16 12:53:17
Temat: Re: Jak zacząć pracę z Fortranem?
Od: Borneq <b...@a...hidden.pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]W dniu 15.09.2016 o 23:04, Sebastian Biały pisze:
> Kiedyś faktycznie był szybki, ale ostatnio widzę że istnieje bardziej na
> zasadzie inercji: jest bo jest w nim jakiś soft numeryczny i jakoś tak
> wychodzi. Czy *obecnie* fortran jest szybszy niż identyczny algorytm w C
> i co najwazniejsze: niby dlaczego?
Obecne C/C++ jest szybkie do kresu możliwości.Sprawdzałem w VC 2015 w
Release:
Wyliczałem Hornerem :
obliczanie przyblizenia Czebyszewa exp(x) wielomianem
stopnia 7; wielomian obliczany schematem Hornera
oraz szybsz? metod?
double horner(double x)
{
double result = 0.0002047;
result = result*x + 0.001439274;
result = result*x + 0.008328596;
result = result*x + 0.041635012;
result = result*x + 0.166667986;
result = result*x + 0.500006347;
result = result*x + 0.999999901;
result = result*x + 0.999999801;
return result;
}
double hornerfast(double x)
{
return ((((((0.0002047*x + 0.001439274)*x + 0.008328596)*x
+ 0.041635012)*x + 0.166667986)*x + 0.500006347)*x + 0.999999901)*x +
0.999999801;
}
oraz dla porównania metodą szybsza od Hornera:
double fast(double x)
{
double y = x*0.297178123 + 0.155642921;
double z = y*y;
return (z + 0.732273642600117)*(y*((z + 2.4368618551)*(z + y -
1.0184605924)
+ 5.2036422682) + 1.5688833150) - 0.5565483727;
}
Przed laty pisałem coś takiego w Pascalu
i horner na Duronie 900 miał 190 taktów, hornerfast na Duronie 900 miał
72 takty a fast
na Duronie 900 miał 105 taktów, a 160 gdy "linie nie były polaczone ze sobą"
Czyli zależność procedury od tego czy ją się napisze w jednej linii a
poza tym nowa metoda fast gorsza od szybszego Hornera mimo że mniej mnożeń.
Spowodowane to było małą optymalizacją.
W C++ zupełnie co innego, pętla 20000000:
horner 68.82 ms
hornerfast 68.9 ms
fast 68.19 ms
Wszystkie tak samo, niestety szybsza metoda niż Hornera tu nie działała
chyba stopień 7 to za mało, trzeba by z 12.
Uwaga: Gdy wykonywałem pomiar czasu za pomocą std::chrono biorąc większą
lub mniejsza pętlę było źle, bo im większa pętla tym mniej na jedną
funkcję. Więc wziąłem nie największą pętlę i jeszcze ją wykonałem 100
razy biorą NAJMNIEJSZY rezultat a nie średni. Bywało źle, bo za
pierwszym razem wykonywało się zwykle najwolniej, potem z 5 razy
szybciej ale jeszcze nie tak, potem już tak samo.
WNIOSEK: C++ jest tak szybkie, że nie trzeba się już przejmować postacią
procedury.
ALE z drugiej strony stopień 7 wielomianu to za mało aby zadziałała
skomplikowana metoda, która miała przyśpieszyć Hornera.
Następne wpisy z tego wątku
- 16.09.16 12:54 Borneq
- 16.09.16 13:58 joahim
- 16.09.16 14:05 Borneq
- 16.09.16 14:10 joahim
- 16.09.16 14:15 Borneq
- 16.09.16 17:38 bartekltg
- 16.09.16 17:46 bartekltg
- 16.09.16 17:47 slawek
- 16.09.16 18:02 slawek
- 16.09.16 18:09 slawek
- 16.09.16 18:12 slawek
- 16.09.16 18:32 slawek
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-11-11 Wyważanie kół rowerowych
- 2024-11-11 Kosz, gdzie??
- 2024-11-11 Coraz mniej ludzi robi prawo jazdy
- 2024-11-11 Opole => SAP HANA Cloud Dev / Data Engineer <=
- 2024-11-11 Warszawa => Spedytor Międzynarodowy <=
- 2024-11-11 Lublin => Senior PHP Developer <=
- 2024-11-11 Marki => Senior PHP Symfony Developer <=
- 2024-11-11 Chrzanów => Team Lead / Tribe Lead FrontEnd <=
- 2024-11-11 Gliwice => Specjalista ds. public relations <=
- 2024-11-11 Gdańsk => Kierownik Działu Spedycji Międzynarodowej <=
- 2024-11-11 Gdańsk => Head of International Freight Forwarding Department <=
- 2024-11-11 Warszawa => Sales Development Representative (in German) <=
- 2024-11-11 Marsz niepodległości
- 2024-11-08 Belka
- 2024-11-09 pierdolec na punkcie psa