-
Data: 2011-02-02 18:14:28
Temat: Re: Porównanie szybkości mnożenia macierzy w CPP i PASCAL
Od: Fil <f...@p...onet.pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]> Pokaz caly program, wraz z wywolywaniem tej procedury.
Wedle życzenia:
Wariant 1:
program test;
{$APPTYPE CONSOLE}
uses
SysUtils,
Windows;
type
TMatrix = array of array of double;
procedure NewMatrix(N, M:integer; var T:TMatrix);
begin
SetLength(T, N, M);
end;
procedure RndMatrix(N, M:integer; var T:TMatrix);
var
i, j:integer;
begin
for i := 0 to N-1 do
for j := 0 to M-1 do T[i, j] := random(N * M);
end;
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;
const
N = 2000;
M = 300;
var
A, B, C:TMatrix;
T1, T2, F:int64;
begin
randomize;
NewMatrix(N, M, A);
NewMatrix(M, N, B);
NewMatrix(N, N, C);
RndMatrix(N, M, A);
RndMatrix(M, N, B);
QueryPerformanceFrequency(F);
QueryPerformanceCounter(T1);
MulMatrix(N, M, N, A, B, C);
QueryPerformanceCounter(T2);
Writeln('Time = ' + FloatToStr((T2 - T1) / F));
end.
i wariant 2:
program test;
{$APPTYPE CONSOLE}
uses
SysUtils,
Windows;
type
TA=array[0..1999,0..299] of double;
TB=array[0..299,0..1999] of double;
TC=array[0..1999,0..1999] of double;
procedure RndMatrix2A(N, M:integer; var T:TA);
var
i, j:integer;
begin
for i := 0 to N-1 do
for j := 0 to M-1 do T[i, j] := random(N * M);
end;
procedure RndMatrix2B(N, M:integer; var T:TB);
var
i, j:integer;
begin
for i := 0 to N-1 do
for j := 0 to M-1 do T[i, j] := random(N * M);
end;
procedure MulMatrix2(N, Q, M:integer; var T1:TA; var T2:TB; var T3:TC);
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;
const
N = 2000;
M = 300;
var
A:TA;
B:TB;
C:TC;
T1, T2, F:int64;
begin
randomize;
RndMatrix2A(N, M, A);
RndMatrix2B(M, N, B);
QueryPerformanceFrequency(F);
QueryPerformanceCounter(T1);
MulMatrix2(N, M, N, A, B, C);
QueryPerformanceCounter(T2);
Writeln('Time = ' + FloatToStr((T2 - T1) / F));
end.
Pozdrawiam,
Fil.
Następne wpisy z tego wątku
- 02.02.11 18:14 Fil
- 02.02.11 18:20 Fil
- 02.02.11 18:40 Grzegorz Krukowski
- 02.02.11 19:05 Fil
- 02.02.11 19:15 Grzegorz Krukowski
- 02.02.11 19:30 Fil
- 02.02.11 19:51 Grzegorz Krukowski
- 02.02.11 19:55 Fil
- 02.02.11 19:56 Fil
- 02.02.11 20:03 Grzegorz Krukowski
- 02.02.11 20:50 Fil
- 02.02.11 20:57 Mariusz Marszałkowski
- 02.02.11 20:58 Grzegorz Krukowski
- 02.02.11 21:00 Mariusz Marszałkowski
- 02.02.11 21:40 Fil
Najnowsze wątki z tej grupy
- 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
- Ada 2022 Language Reference Manual to be Published by Springer
- Press Release - AEiC 2023, Ada-Europe Reliable Softw. Technol.
- Ada-Europe - AEiC 2023 early registration deadline approaching
- Ada-Europe Int.Conf. Reliable Software Technologies, AEiC 2023
- Ile cykli zajmuje mnożenie liczb 64-bitowych?
Najnowsze wątki
- 2024-07-01 W-wa naklejki wjazd do centrum
- 2024-07-01 ładowarka zmarła
- 2024-07-01 Koder szuka pracy. Koduję w j.: Asembler, C, C++ (z Qt) i D.
- 2024-07-01 Kraków => Kierownik Działu Spedycji Międzynarodowej <=
- 2024-07-01 Białystok => Full Stack Web Developer (.Net Core, Angular6+) <=
- 2024-07-01 Berlin => Technical Rollouter (Radio Systems Software Installation and
- 2024-07-01 Warszawa => Key Account Manager <=
- 2024-07-01 Gdańsk => Programista Full Stack .Net <=
- 2024-07-01 Zabrze => Junior HelpDesk <=
- 2024-07-01 Warszawa => Key Account Manager <=
- 2024-07-01 Bielsko-Biała => Expert Migration Architect (Azure) <=
- 2024-07-01 Mini Netykieta polskich grup dyskusyjnych
- 2024-07-01 Re: Jak wypełnić polecenie francuskiego sądu blokowania niektórych zapytań DNS? Blokując Francję
- 2024-07-01 Re: Powtórne wezwanie na PO-komisję uzdrowi Ziobrę już w 10 dni
- 2024-07-01 CA -- problem z logowaniem