C: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
Zeile 35: | Zeile 35: | ||
y ^= y << 5; \ | y ^= y << 5; \ | ||
seed_t t = 698769069UL * z + c; \ | seed_t t = 698769069UL * z + c; \ | ||
c = t << | c = t << 31; \ | ||
z = t; \ | z = t; \ | ||
seed = x + y + z; \ | seed = x + y + z; \ |
Version vom 13. Mai 2016, 22:51 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 << 31; \ 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); }