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


Groups > pl.comp.programming > #28752

Re: Jak zacząć pracę z Fortranem?

From Borneq <borneq@antyspam.hidden.pl>
Newsgroups pl.comp.programming
Subject Re: Jak zacząć pracę z Fortranem?
Date 2016-09-16 12:53 +0200
Organization ATMAN - ATM S.A.
Message-ID <nrgiui$jmv$1@node1.news.atman.pl> (permalink)
References (2 earlier) <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>

Show all headers | 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