C: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| Zeile 23: | Zeile 23: | ||
#include "time.h" | #include "time.h" | ||
typedef unsigned long seed_t; | typedef unsigned long seed_t; | ||
#define DEFINE_VARS(seed, x, y, z, c) seed_t seed = 0x20111958UL; \ | |||
seed_t x = 0x33221122UL; \ | |||
seed_t y = 0x73829382UL; \ | |||
seed_t z = 0xabcdef07UL; \ | |||
seed_t c = 0 | |||
#define next(seed, x, y, z, c) \ | |||
do { \ | |||
x = x * 0x20111957 + 0x11121989; \ | |||
y ^= y << 13; \ | |||
y ^= y >> 17; \ | |||
y ^= y << 5; \ | |||
seed_t t = 698769069UL * z + c; \ | |||
c = t << 32; \ | |||
z = t; \ | |||
seed = x + y + z; \ | |||
} while (0) | |||
} | |||
seed_t calcRandom(int millions){ | seed_t calcRandom(int millions){ | ||
DEFINE_VARS(seed, x, y, z, c); | |||
seed_t rc = 0; | seed_t rc = 0; | ||
while (millions-- > 0){ | while (millions-- > 0){ | ||
int ix2 = 1000000; | int ix2 = 1000000; | ||
while(ix2-- > 0) | while(ix2-- > 0){ | ||
rc += | next(seed, x, y, z, c); | ||
rc += seed; | |||
} | |||
} | } | ||
return rc; | return rc; | ||
Version vom 13. Mai 2016, 22:17 Uhr
big.c (schnell Platte füllen)
#include <stdio.h>
#include <stdlib.h>
int main(int count, char** arg){
FILE* file = fopen("big.data", "w");
int size = 0x10000 * 128;
void* data = calloc(size, 1);
int mByte = 0;
while (fwrite(data, size, 1, file) > 0){
mByte += size / 1024 / 1024;
printf("%d MByte\n", mByte);
}
return 0;
}
CPU-Benchmark hamamips.c
#include "stdio.h"
#include "stdlib.h"
#include "time.h"
typedef unsigned long seed_t;
#define DEFINE_VARS(seed, x, y, z, c) seed_t seed = 0x20111958UL; \
seed_t x = 0x33221122UL; \
seed_t y = 0x73829382UL; \
seed_t z = 0xabcdef07UL; \
seed_t c = 0
#define next(seed, x, y, z, c) \
do { \
x = x * 0x20111957 + 0x11121989; \
y ^= y << 13; \
y ^= y >> 17; \
y ^= y << 5; \
seed_t t = 698769069UL * z + c; \
c = t << 32; \
z = t; \
seed = x + y + z; \
} while (0)
seed_t calcRandom(int millions){
DEFINE_VARS(seed, x, y, z, c);
seed_t rc = 0;
while (millions-- > 0){
int ix2 = 1000000;
while(ix2-- > 0){
next(seed, x, y, z, c);
rc += seed;
}
}
return rc;
}
int main(int argc, char** argv){
clock_t start = clock();
seed_t value;
clock_t duration;
int millions = 100;
if (argc > 1 && atol(argv[1]) != 0)
millions = atol(argv[1]);
value = calcRandom(millions);
duration = clock() - start;
printf ("%.3f HamaMips %.3f sec value: %d\n",
millions * (double) CLOCKS_PER_SEC / duration,
duration / (double) CLOCKS_PER_SEC,
value);
}