#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
#include <time.h>
double sec( ) {
struct timespec t;
clock_gettime( CLOCK_MONOTONIC, & t) ;
return t.tv_sec + 1e-9 * t.tv_nsec ;
}
int find_maximum( int * values, size_t n) {
int maximum = INT_MIN;
for ( size_t i = 0 ; i < n; i++ ) {
maximum = values[ i] > maximum ? values[ i] : maximum;
}
return maximum;
}
int main( ) {
for ( int k = 0 ; k < 10 ; k++ ) {
size_t n = 13 * 1000 * 1000 ;
size_t n_bytes = n * sizeof ( int ) ;
int * values
= malloc ( n_bytes
) ;
for ( size_t i = 0 ; i < n; i++ ) {
}
double t = sec( ) ;
int maximum = find_maximum( values, n) ;
double dt = sec( ) - t;
printf ( "%f GB/s, maximum value: %i\n " , n_bytes
* 1e-9 / dt
, maximum
) ;
}
return 0 ;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPGxpbWl0cy5oPgojaW5jbHVkZSA8dGltZS5oPgoKZG91YmxlIHNlYygpewogICAgc3RydWN0IHRpbWVzcGVjIHQ7CiAgICBjbG9ja19nZXR0aW1lKENMT0NLX01PTk9UT05JQywgJnQpOwogICAgcmV0dXJuIHQudHZfc2VjICsgMWUtOSAqIHQudHZfbnNlYzsKfQoKaW50IGZpbmRfbWF4aW11bShpbnQgKnZhbHVlcywgc2l6ZV90IG4pewogICAgaW50IG1heGltdW0gPSBJTlRfTUlOOwogICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBuOyBpKyspewogICAgICAgIG1heGltdW0gPSB2YWx1ZXNbaV0gPiBtYXhpbXVtID8gdmFsdWVzW2ldIDogbWF4aW11bTsKICAgIH0KICAgIHJldHVybiBtYXhpbXVtOwp9CgppbnQgbWFpbigpewogICAgZm9yIChpbnQgayA9IDA7IGsgPCAxMDsgaysrKXsKICAgICAgICBzaXplX3QgbiA9IDEzICogMTAwMCAqIDEwMDA7CgogICAgICAgIHNpemVfdCBuX2J5dGVzID0gbiAqIHNpemVvZihpbnQpOwogICAgICAgIGludCAqdmFsdWVzID0gbWFsbG9jKG5fYnl0ZXMpOwoKICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG47IGkrKyl7CiAgICAgICAgICAgIHZhbHVlc1tpXSA9IHJhbmQoKTsKICAgICAgICB9CgogICAgICAgIGRvdWJsZSB0ID0gc2VjKCk7CgogICAgICAgIGludCBtYXhpbXVtID0gZmluZF9tYXhpbXVtKHZhbHVlcywgbik7CgogICAgICAgIGRvdWJsZSBkdCA9IHNlYygpIC0gdDsKCiAgICAgICAgcHJpbnRmKCIlZiBHQi9zLCBtYXhpbXVtIHZhbHVlOiAlaVxuIiwgbl9ieXRlcyAqIDFlLTkgLyBkdCwgbWF4aW11bSk7CgogICAgICAgIGZyZWUodmFsdWVzKTsKICAgIH0KCiAgICByZXR1cm4gMDsKfQo=
stdout
4.760517 GB/s, maximum value: 2147483025
4.838556 GB/s, maximum value: 2147483611
4.430803 GB/s, maximum value: 2147483385
4.944641 GB/s, maximum value: 2147483267
4.937876 GB/s, maximum value: 2147483514
4.955096 GB/s, maximum value: 2147483526
3.928283 GB/s, maximum value: 2147483204
4.763301 GB/s, maximum value: 2147483417
4.938250 GB/s, maximum value: 2147483344
4.959307 GB/s, maximum value: 2147483606