-
Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!news.cyf-kr.edu.pl!news.nask
.pl!news.nask.org.pl!news.internetia.pl!not-for-mail
From: Edek <e...@g...com>
Newsgroups: pl.comp.programming
Subject: Re: Stara szkoła w XXI wieku
Date: Fri, 3 May 2013 12:13:28 +0000 (UTC)
Organization: Netia S.A.
Lines: 123
Message-ID: <km09l8$v4c$6@mx1.internetia.pl>
References: <klvkiv$v4c$4@mx1.internetia.pl>
<9...@g...com>
NNTP-Posting-Host: 159-205-138-229.adsl.inetia.pl
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Trace: mx1.internetia.pl 1367583208 31884 159.205.138.229 (3 May 2013 12:13:28 GMT)
X-Complaints-To: a...@i...pl
NNTP-Posting-Date: Fri, 3 May 2013 12:13:28 +0000 (UTC)
X-Tech-Contact: u...@i...pl
User-Agent: Pan/0.139 (Sexual Chocolate; GIT bf56508 git://git.gnome.org/pan2)
X-Server-Info: http://www.internetia.pl/
Xref: news-archive.icm.edu.pl pl.comp.programming:203065
[ ukryj nagłówki ]Dnia Fri, 03 May 2013 04:02:49 -0700 po głębokim namyśle firr kenobi
rzekł:
> drugie dla mnie najciekawze zdanie
>
> "Systems programming is definitely in no way a goal. If that's the
> target, C is still the language of choice, of course. However, C is
> still the golden standard for general performance -- although, of
> course, Fortran beats it in some cases."
>
> jest to tajemnica ktora sie przejawia od jakiegos czasu w moim zyciu - w
> jakich to cases fortran beats c ??? (mozliwe ze tak jest ale to raczej z
> jakichs 'pzypadkowych' powodow typu pewnie cos ze zmiennymi lokalnymi
> albo conwencja wywolan funkcji w c albo cos takiego - pozatym raczej
> chyba nie ma powodu wiec nie powinno tak byc ale chetnie bym sie
> dowiedzial)
Fortran przez lata królował w obliczeniach numerycznych, teraz już
bardziej używane jest C++.
Na pytanie 'dlaczego' nie ma trywialnej odpowiedzi: Fortran numerycznie
jest szybszy od C dość często, Python jest wolniejszy tak ze 20x minimum
praktycznie zawsze - tak po prostu jest, zaakceptuj to jak pogodę.
> z innych ciekawostek: CO TO ROBI ?
>
> function randmatstat(t)
> n = 5 v = zeros(t)
> w = zeros(t)
> for i = 1:t
> a = randn(n,n)
> b = randn(n,n)
> c = randn(n,n)
> d = randn(n,n)
> P = [a b c d]
> Q = [a b; c d]
> v[i] = trace((P.'*P)^4)
> w[i] = trace((Q.'*Q)^4)
> end std(v)/mean(v), std(w)/mean(w)
> end
Wklejam wersję c. Od "co" ważniejsze dla mnie jest "jak".
Edek
PS. Kod w c:
struct double_pair randmatstat(int t) {
int n = 5;
struct double_pair r;
double *v = (double*)calloc(t,sizeof(double));
double *w = (double*)calloc(t,sizeof(double));
double *a = (double*)malloc((n)*(n)*sizeof(double));
double *b = (double*)malloc((n)*(n)*sizeof(double));
double *c = (double*)malloc((n)*(n)*sizeof(double));
double *d = (double*)malloc((n)*(n)*sizeof(double));
double *P = (double*)malloc((n)*(4*n)*sizeof(double));
double *Q = (double*)malloc((2*n)*(2*n)*sizeof(double));
double *PtP1 = (double*)malloc((4*n)*(4*n)*sizeof(double));
double *PtP2 = (double*)malloc((4*n)*(4*n)*sizeof(double));
double *QtQ1 = (double*)malloc((2*n)*(2*n)*sizeof(double));
double *QtQ2 = (double*)malloc((2*n)*(2*n)*sizeof(double));
for (int i=0; i < t; i++) {
randmtzig_fill_randn(a, n*n);
randmtzig_fill_randn(b, n*n);
randmtzig_fill_randn(c, n*n);
randmtzig_fill_randn(d, n*n);
memcpy(P+0*n*n, a, n*n*sizeof(double));
memcpy(P+1*n*n, b, n*n*sizeof(double));
memcpy(P+2*n*n, c, n*n*sizeof(double));
memcpy(P+3*n*n, d, n*n*sizeof(double));
for (int j=0; j < n; j++) {
for (int k=0; k < n; k++) {
Q[2*n*j+k] = a[k];
Q[2*n*j+n+k] = b[k];
Q[2*n*(n+j)+k] = c[k];
Q[2*n*(n+j)+n+k] = d[k];
}
}
cblas_dgemm(CblasColMajor, CblasTrans, CblasNoTrans,
n, n, 4*n, 1.0, P, 4*n, P, 4*n, 0.0, PtP1, 4*n);
cblas_dgemm(CblasColMajor, CblasNoTrans, CblasNoTrans,
4*n, 4*n, 4*n, 1.0, PtP1, 4*n, PtP1, 4*n, 0.0, PtP2,
4*n);
cblas_dgemm(CblasColMajor, CblasNoTrans, CblasNoTrans,
4*n, 4*n, 4*n, 1.0, PtP2, 4*n, PtP2, 4*n, 0.0, PtP1,
4*n);
for (int j=0; j < n; j++) {
v[i] += PtP1[(n+1)*j];
}
cblas_dgemm(CblasColMajor, CblasTrans, CblasNoTrans,
2*n, 2*n, 2*n, 1.0, Q, 2*n, Q, 2*n, 0.0, QtQ1, 2*n);
cblas_dgemm(CblasColMajor, CblasNoTrans, CblasNoTrans,
2*n, 2*n, 2*n, 1.0, QtQ1, 2*n, QtQ1, 2*n, 0.0, QtQ2,
2*n);
cblas_dgemm(CblasColMajor, CblasNoTrans, CblasNoTrans,
2*n, 2*n, 2*n, 1.0, QtQ2, 2*n, QtQ2, 2*n, 0.0, QtQ1,
2*n);
for (int j=0; j < 2*n; j++) {
w[i] += QtQ1[(2*n+1)*j];
}
}
free(PtP1);
free(PtP2);
free(QtQ1);
free(QtQ2);
free(P);
free(Q);
free(a);
free(b);
free(c);
free(d);
double v1=0.0, v2=0.0, w1=0.0, w2=0.0;
for (int i=0; i < t; i++) {
v1 += v[i]; v2 += v[i]*v[i];
w1 += w[i]; w2 += w[i]*w[i];
}
free(v);
free(w);
r.s1 = sqrt((t*(t*v2-v1*v1))/((t-1)*v1*v1));
r.s2 = sqrt((t*(t*w2-w1*w1))/((t-1)*w1*w1));
return r;
}
Następne wpisy z tego wątku
- 03.05.13 14:04 M.M.
- 03.05.13 14:08 Stachu 'Dozzie' K.
- 03.05.13 14:53 M.M.
- 03.05.13 15:23 Kosu
- 03.05.13 16:09 M.M.
- 03.05.13 17:39 Kosu
- 03.05.13 21:47 Bronek Kozicki
- 04.05.13 23:07 Stachu 'Dozzie' K.
- 29.05.13 23:29 3d
Najnowsze wątki z tej grupy
- Arch. Prog. Nieuprzywilejowanych w pełnej wer. na nowej s. WWW energokod.pl
- 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
Najnowsze wątki
- 2025-01-02 Rzeszów => International Freight Forwarder <=
- 2025-01-02 Warszawa => Software Engineer .Net <=
- 2025-01-02 Warszawa => Spedytor międzynarodowy <=
- 2025-01-02 Wróblewo => Analityk finansowy <=
- 2025-01-02 Szczecin => Senior Field Sales (system ERP) <=
- 2025-01-02 Ostrów Wielkopolski => Area Sales Manager OZE <=
- 2025-01-02 Bydgoszcz => Specjalista ds. Sprzedaży (transport drogowy) <=
- 2025-01-01 Już nie płoną
- 2025-01-01 Digikey, SN74CBT3253CD, FST3253, ktoś ma?
- 2025-01-01 Co tam u Was
- 2025-01-01 Koder szuka pracy. Koduję w j.: Asembler, C, C++ (z bibl. Qt) i D.
- 2025-01-01 Gdańsk => Delphi Programmer <=
- 2025-01-01 Łódź => Programista Full Stack .Net <=
- 2025-01-01 Żerniki => Regionalny Kierownik Sprzedaży (OZE) <=
- 2025-01-01 Wrocław => Specjalista ds. Sprzedaży <=