Browse Source

uses pointer instead of dynamic array which needs initialization.

git-svn-id: trunk@5552 -
Vincent Snijders 18 years ago
parent
commit
0a983cfa11
1 changed files with 13 additions and 12 deletions
  1. 13 12
      tests/bench/shootout/src/nsieve.pp

+ 13 - 12
tests/bench/shootout/src/nsieve.pp

@@ -6,31 +6,32 @@
 
 program nsieve;
 
-{$mode objfpc}
+{$mode objfpc}{$I-}
 
-var n : integer;
+var
+  n : integer;
 
 procedure primes(n : integer); inline;
-var flags : array of boolean;
-    size,i,j,count : integer;
+var
+  flags: PBoolean;
+  size,i,j,count : integer;
 begin
   size := 10000 shl n;
-  SetLength(flags, size+1);
-  for i := 2 to size do flags[i] := true;
-//fillchar(flags[0],length(flags),ord(true));
+  flags := getmem(size+1);
+  fillchar(flags^,memsize(flags),true);
   count := 0;
   for i := 2 to size do
     if flags[i] then
     begin
-      count := count + 1;
+      inc(count);
       j := i + i;
       while j <= size do begin
-//      flags[j] := false;
-        if flags[j] then flags[j] := false;
-        j := j + i;
+        flags[j] := false;
+        inc(j, i);
       end;
     end;
   writeln('Primes up to', size:9, count:9);
+  freemem(flags);
 end;
 
 begin
@@ -38,4 +39,4 @@ begin
   primes(n);
   primes(n-1);
   primes(n-2);
-end.
+end.