Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > pl.comp.programming > #28752

Re: Jak zacząć pracę z Fortranem?

Path csiph.com!1.us.feeder.erje.net!feeder.erje.net!1.eu.feeder.erje.net!news.unit0.net!news.nask.pl!news.nask.org.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.POSTED!not-for-mail
From Borneq <borneq@antyspam.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> (permalink)
References <nrbivb$kfs$1@node2.news.atman.pl> <nrbivb$kfs$1@node2.news.atman.pl> <almarsoft.2398171738796520771@news.v.pl> <nrdgvu$i32$1@node1.news.atman.pl> <almarsoft.3517884194599976147@news.v.pl> <abd6b4ac-54ea-4466-9a7c-323774a441d1@googlegroups.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 usenet@atman.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 csiph.com pl.comp.programming:28752

Show key headers only | View raw


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.

Back to pl.comp.programming | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

Jak zacząć pracę z Fortranem? Borneq <borneq@antyspam.hidden.pl> - 2016-09-14 15:22 +0200
  Re: Jak zacząć pracę z Fortranem? Borneq <borneq@antyspam.hidden.pl> - 2016-09-14 16:24 +0200
    Re: Jak zacząć pracę z Fortranem? bartekltg <bartekltg@gmail.com> - 2016-09-14 17:18 +0200
      Re: Jak zacząć pracę z Fortranem? Borneq <borneq@antyspam.hidden.pl> - 2016-09-14 18:05 +0200
        Re: Jak zacząć pracę z Fortranem? Borneq <borneq@antyspam.hidden.pl> - 2016-09-14 20:58 +0200
          Re: Jak zacząć pracę z Fortranem? Borneq <borneq@antyspam.hidden.pl> - 2016-09-15 06:28 +0200
  Re: Jak zacząć pracę z Fortranem? slawek <fake@fakeemail.com> - 2016-09-15 08:01 +0200
    Re: Jak zacząć pracę z Fortranem? Borneq <borneq@antyspam.hidden.pl> - 2016-09-15 09:01 +0200
      Re: Jak zacząć pracę z Fortranem? slawek <fake@fakeemail.com> - 2016-09-15 11:24 +0200
        Re: Jak zacząć pracę z Fortranem? bartekltg <bartekltg@gmail.com> - 2016-09-15 11:34 +0200
          Re: Jak zacząć pracę z Fortranem? slawek <fake@fakeemail.com> - 2016-09-15 14:29 +0200
            Re: Jak zacząć pracę z Fortranem? bartekltg <bartekltg@gmail.com> - 2016-09-15 09:03 -0700
              Re: Jak zacząć pracę z Fortranem? slawek <fake@fakeemail.com> - 2016-09-15 18:46 +0200
                Re: Jak zacząć pracę z Fortranem? bartekltg <bartekltg@gmail.com> - 2016-09-15 10:10 -0700
                Re: Jak zacząć pracę z Fortranem? slawek <fake@fakeemail.com> - 2016-09-15 22:10 +0200
              Re: Jak zacząć pracę z Fortranem? slawek <fake@fakeemail.com> - 2016-09-15 19:08 +0200
        Re: Jak zacząć pracę z Fortranem? Borneq <borneq@antyspam.hidden.pl> - 2016-09-15 11:45 +0200
          Re: Jak zacząć pracę z Fortranem? slawek <fake@fakeemail.com> - 2016-09-15 14:17 +0200
        Re: Jak zacząć pracę z Fortranem? joahim <w.birula@gmail.com> - 2016-09-15 13:28 -0700
          Re: Jak zacząć pracę z Fortranem? Sebastian Biały <heby@poczta.onet.pl> - 2016-09-15 23:04 +0200
            Re: Jak zacząć pracę z Fortranem? Adam M <amorawski@magna-power.com> - 2016-09-15 14:55 -0700
              Re: Jak zacząć pracę z Fortranem? slawek <fake@fakeemail.com> - 2016-09-16 01:24 +0200
                Re: Jak zacząć pracę z Fortranem? Borneq <borneq@antyspam.hidden.pl> - 2016-09-16 12:54 +0200
                Re: Jak zacząć pracę z Fortranem? slawek <fake@fakeemail.com> - 2016-09-16 18:02 +0200
                Re: Jak zacząć pracę z Fortranem? joahim <w.birula@gmail.com> - 2016-09-16 04:58 -0700
                Re: Jak zacząć pracę z Fortranem? Borneq <borneq@antyspam.hidden.pl> - 2016-09-16 14:05 +0200
                Re: Jak zacząć pracę z Fortranem? joahim <w.birula@gmail.com> - 2016-09-16 05:10 -0700
                Re: Jak zacząć pracę z Fortranem? Borneq <borneq@antyspam.hidden.pl> - 2016-09-16 14:15 +0200
                Re: Jak zacząć pracę z Fortranem? slawek <fake@fakeemail.com> - 2016-09-16 18:12 +0200
                Re: Jak zacząć pracę z Fortranem? bartekltg <bartekltg@gmail.com> - 2016-09-16 17:38 +0200
                Re: Jak zacząć pracę z Fortranem? slawek <fake@fakeemail.com> - 2016-09-16 18:32 +0200
                Re: Jak zacząć pracę z Fortranem? slawek <fake@fakeemail.com> - 2016-09-16 18:09 +0200
            Re: Jak zacząć pracę z Fortranem? Borneq <borneq@antyspam.hidden.pl> - 2016-09-16 12:53 +0200
              Re: Jak zacząć pracę z Fortranem? bartekltg <bartekltg@gmail.com> - 2016-09-16 17:46 +0200
              Re: Jak zacząć pracę z Fortranem? slawek <fake@fakeemail.com> - 2016-09-16 17:47 +0200
          Re: Jak zacząć pracę z Fortranem? slawek <fake@fakeemail.com> - 2016-09-16 01:12 +0200
  Re: Jak zacząć pracę z Fortranem? Sebastian Biały <heby@poczta.onet.pl> - 2016-09-15 19:15 +0200
    Re: Jak zacząć pracę z Fortranem? slawek <fake@fakeemail.com> - 2016-09-15 22:27 +0200

csiph-web