pascalabcnet/TestSuite/CompilationSamples/SqrSinArrays.pas
Бондарев Иван e6e67c193c initial commit
2015-05-14 21:35:07 +02:00

47 lines
1.1 KiB
ObjectPascal

// äåìîíñòðàöèÿ ðàáîòû ïàðàëëåëüíîãî for
//çàïîëíåíèå ìàññèâà
procedure FillRandArr(A: array of real);
begin
Randomize;
for var i := 0 to A.Length - 1 do
a[i] := Random(1000);
end;
// âûâîä ìàññèâà
procedure printArr(A: array of real);
begin
for var i := 0 to A.Length - 1 do
writeln(a[i]);
end;
// Ïîñëåäîâàòåëüíîå âû÷èñëåíèå êâàäðàòîâ ñèíóñîâ
procedure SqrSinArr(A: array of real; var C: array of real);
begin
for var i := 0 to A.Length - 1 do
C[i] := sqr(sin(A[i]));
end;
// Ïàðàëëåëüíîå âû÷èñëåíèå êâàäðàòîâ ñèíóñîâ
procedure SqrSinArrParallel(A: array of real; var C: array of real);
begin
{$omp parallel for}
for var i := 0 to A.Length - 1 do
C[i] := sqr(sin(A[i]));
end;
begin
var A: array of real;
var C: array of real;
SetLength(A, 10000000);
SetLength(C, A.Length);
FillRandArr(A);
var m0 := Milliseconds;
SqrSinArrParallel(A, C);
writeln('Ïàðàëëåëüíîå âûïîëíåíèå: ', Milliseconds - m0, 'ms');
m0 := Milliseconds;
SqrSinArr(A, C);
writeln('Ïîñëåäîâàòåëüíîå âûïîëíåíèå: ', Milliseconds - m0, 'ms');
end.