uses
  SysUtils;

function by_ref(c: Integer; var x: Double): Double;
var
  i: Integer;
begin
  Result := 0;
  for i := 1 to c do Result += x;
end;

function by_val(c: Integer; x: Double): Double;
var
  i: Integer;
begin
  Result := 0;
  for i := 1 to c do Result += x;
end;

const NR = 10;
var
  t0, tv, tr: TDateTime;
  i: Integer;
  r, x: Double;
begin
  x := 7;

  t0 := Now;
  r := 0;
  for i := 1 to 10000000 do r += by_val(NR, x);
  tv := Now - t0;
  
  t0 := Now;
  r := 0;
  for i := 1 to 10000000 do r += by_ref(NR, x);
  tr := Now - t0;

  Writeln(Format('By val = %.2fs', [tv  * 24 * 60 * 60]));
  Writeln(Format('By ref = %.2fs', [tr  * 24 * 60 * 60]));
end.
