Spaces:
Runtime error
Runtime error
File size: 851 Bytes
8df6da4 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
#include "vm.h"
#include "libcflat.h"
int sieve(char* data, int size)
{
int i, j, r = 0;
for (i = 0; i < size; ++i)
data[i] = 1;
data[0] = data[1] = 0;
for (i = 2; i < size; ++i)
if (data[i]) {
++r;
for (j = i*2; j < size; j += i)
data[j] = 0;
}
return r;
}
void test_sieve(const char *msg, char *data, int size)
{
int r;
printf("%s:", msg);
r = sieve(data, size);
printf("%d out of %d\n", r, size);
}
#define STATIC_SIZE 1000000
#define VSIZE 2000000
char static_data[STATIC_SIZE];
int main()
{
void *v;
int i;
printf("starting sieve\n");
test_sieve("static", static_data, STATIC_SIZE);
setup_vm();
test_sieve("mapped", static_data, STATIC_SIZE);
for (i = 0; i < 3; ++i) {
v = vmalloc(VSIZE);
test_sieve("virtual", v, VSIZE);
vfree(v);
}
return 0;
}
|