#include #include //#define BIG_SIZE 10000 #define BIG_SIZE 1000000000 //static const int BIG_SIZE = 10000; struct big_s { uint8_t stuff[BIG_SIZE]; }; typedef struct big_s big; void put(big b, uint8_t n) { for (int i = 0; i < BIG_SIZE; ++i) { b.stuff[i] = n; } } void put_fast(big *b, uint8_t n) { for (int i = 0; i < BIG_SIZE; ++i) { b->stuff[i] = n; } } int sum(big b, int i) { if (i >= BIG_SIZE) { return 0; } return b.stuff[i] + sum(b, i+1); } int sum_fast(big *b_ptr, int i) { if (i >= BIG_SIZE) { return 0; } return b_ptr->stuff[i] + sum_fast(b_ptr, i+1); } int main(int argc, char **argv) { big b; printf("Survived.\n"); b.stuff[0] = 255; b.stuff[BIG_SIZE/2] = 255; b.stuff[BIG_SIZE-1] = 255; printf( "Stuff: %d, %d, %d\n", b.stuff[0], b.stuff[BIG_SIZE/2], b.stuff[BIG_SIZE-1] ); put(b, 47); printf( "Stuff: %d, %d, %d\n", b.stuff[0], b.stuff[BIG_SIZE/2], b.stuff[BIG_SIZE-1] ); put_fast(&b, 128); printf( "Stuff: %d, %d, %d\n", b.stuff[0], b.stuff[BIG_SIZE/2], b.stuff[BIG_SIZE-1] ); printf("Fast sum: %d\n", sum_fast(&b, 0)); printf("Slow sum: %d\n", sum(b, 0)); }