-
Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.
atman.pl!.POSTED!not-for-mail
From: Borneq <b...@a...hidden.pl>
Newsgroups: pl.comp.programming
Subject: Re: Jak zacząć pracę z Fortranem?
Date: Fri, 16 Sep 2016 12:53:17 +0200
Organization: ATMAN - ATM S.A.
Lines: 69
Message-ID: <nrgiui$jmv$1@node1.news.atman.pl>
References: <nrbivb$kfs$1@node2.news.atman.pl> <nrbivb$kfs$1@node2.news.atman.pl>
<a...@n...v.pl>
<nrdgvu$i32$1@node1.news.atman.pl>
<a...@n...v.pl>
<a...@g...com>
<nrf2ch$uil$1@node2.news.atman.pl>
NNTP-Posting-Host: 91.239.205.105
Mime-Version: 1.0
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 8bit
X-Trace: node1.news.atman.pl 1474023186 20191 91.239.205.105 (16 Sep 2016 10:53:06
GMT)
X-Complaints-To: u...@a...pl
NNTP-Posting-Date: Fri, 16 Sep 2016 10:53:06 +0000 (UTC)
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101
Thunderbird/45.2.0
In-Reply-To: <nrf2ch$uil$1@node2.news.atman.pl>
Xref: news-archive.icm.edu.pl pl.comp.programming:209576
[ ukryj 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
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- 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
Najnowsze wątki
- 2024-12-04 Warszawa => Architekt rozwiązań (doświadczenie w obszarze Java, AWS
- 2024-12-04 Czy policjantów należy ROZBROIĆ?
- 2024-12-03 Tymoteusz Sz.
- 2024-12-03 Re: Prezydent ułaskawia: Prezydent USA Biden (D) ułaskawia syna własnego
- 2024-12-03 Re: Tani dodatkowy sim do smartwacha
- 2024-12-03 Wróblewo => Analityk finansowy <=
- 2024-12-03 Praktyczny test GPS...
- 2024-12-02 Tak się sprzedają elektryczne woldzwageny ;-)
- 2024-12-02 Akumulator do Hyundai
- 2024-12-02 Olsztyn => Sales Specialist <=
- 2024-12-02 Poznań => Technical Artist <=
- 2024-12-02 Bieruń => Regionalny Kierownik Sprzedaży (OZE) <=
- 2024-12-02 Kraków => Business Development Manager - Dział Sieci i Bezpieczeńst
- 2024-12-02 Chrzanów => Team Lead / Tribe Lead FrontEnd <=
- 2024-12-02 Białystok => Delphi Programmer <=