eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingPorównanie szybkości mnożenia macierzy w CPP i PASCAL › Re: Porównanie szybkości mnożenia macierzy w CPP i PASCAL
  • Path: news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!.PO
    STED!not-for-mail
    From: Tomasz Kaczanowski <kaczus@dowyciecia_poczta.onet.pl>
    Newsgroups: pl.comp.programming
    Subject: Re: Porównanie szybkości mnożenia macierzy w CPP i PASCAL
    Date: Wed, 02 Feb 2011 17:53:49 +0100
    Organization: http://onet.pl
    Lines: 49
    Message-ID: <iic26u$uu8$1@news.onet.pl>
    References: <iic1t4$umq$1@news.onet.pl>
    NNTP-Posting-Host: aqo162.internetdsl.tpnet.pl
    Mime-Version: 1.0
    Content-Type: text/plain; charset=UTF-8; format=flowed
    Content-Transfer-Encoding: 8bit
    X-Trace: news.onet.pl 1296665630 31688 83.17.174.162 (2 Feb 2011 16:53:50 GMT)
    X-Complaints-To: n...@o...pl
    NNTP-Posting-Date: Wed, 2 Feb 2011 16:53:50 +0000 (UTC)
    User-Agent: Thunderbird 2.0.0.24 (Windows/20100228)
    In-Reply-To: <iic1t4$umq$1@news.onet.pl>
    Xref: news-archive.icm.edu.pl pl.comp.programming:188546
    [ ukryj nagłówki ]

    Fil pisze:
    > Witam!
    >
    > Są dwie procedury:
    > CPP:
    > void MulTab(int N, int Q, int M, double** A, double** B, double** C)
    > {
    > for (int i = 0; i < N; ++i)
    > for (int j = 0; j < M; ++j) {
    > C[i][j] = 0;
    > for (int k = 0; k < Q; ++k) C[i][j] += A[i][k] * B[k][j];
    > }
    > }
    >
    > oraz PASCAL:
    > TMatrix = array of array of double;
    >
    > procedure MulMatrix(N, Q, M:integer; T1, T2:TMatrix; var T3:TMatrix);
    > var
    > i, j, k:integer;
    > begin
    > for i := 0 to N-1 do
    > for j := 0 to M-1 do begin
    > T3[i, j] := 0;
    > for k := 0 to Q-1 do T3[i, j] := T3[i, j] + T1[i, k] * T2[k, j];
    > end;
    > end;
    >
    > Kompiluję obie w BCB Builder 2010 i Delphi 2010 (odpowiednio) w trybie
    > "release" z włączonymi optymalizacjami i odpalam.
    > Dla rozmiarów N = 2000 i M = 300 mam takie czasy:
    > CPP time = 4,5s
    > PAS time = 8,2s
    >
    > Czasy mierzone z wykorzystaniem QueryPerformanceCounter... i wiem, że
    > procedurke w PASCALu można lepiej napisać, ale nie jestem fanem PASCALa
    > i nie sądzę, aby ten niezbyt ładnie napisany kod usprawiedliwiał TAKĄ
    > różnicę w czasach. Chyba, że problem tkwi w tablicach dynamicznych PASCALA?
    >
    > Czy to oznacza, że Delphi nie nadaje się do obliczeń?

    Zapewne się nadaje, ogólnie jednak kompilatory Borlanda słabo
    optymalizują - niezależnie od języka. Więc zależy od tego co chcemy
    obliczać.


    --
    Kaczus
    http://kaczus.republika.pl

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: