#include <stdio.h>
#include <stdlib.h>
#include <sys/time.h>
typedef struct pixel {
unsigned char r, g, b, x;
} pixel;
int main(void)
{
int width = 1920, height = 1080;
int length = width * height;
pixel
*pixels
= (pixel
*)malloc(length
* sizeof(pixel
)); for (int i = 0; i < length; i++) {
pixels[i].r = rnd & 0xFF;
pixels[i].g = rnd >> 8 & 0xFF;
pixels[i].b = rnd >> 16 & 0xFF;
pixels[i].x = 0;
}
struct timeval tv0, tv1, tv2, tv3, tv4;
gettimeofday(&tv0, NULL);
for (int y = 0; y < height; ++y)
for (int x = 0; x < width; ++x) {
pixel *p = &pixels[x + y * width];
p->r ^= 0xff;
p->g ^= 0xff;
p->b ^= 0xff;
}
gettimeofday(&tv1, NULL);
for (int x = 0; x < width; x++)
for (int y = 0; y < height; ++y) {
pixel *p = &pixels[x + y * width];
p->r ^= 0xff;
p->g ^= 0xff;
p->b ^= 0xff;
}
gettimeofday(&tv2, NULL);
printf("Y-X pass: %d usec\n", 1000000 * (tv1.
tv_sec - tv0.
tv_sec) + tv1.
tv_usec - tv0.
tv_usec); printf("X-Y pass: %d usec\n", 1000000 * (tv2.
tv_sec - tv1.
tv_sec) + tv2.
tv_usec - tv1.
tv_usec);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHN5cy90aW1lLmg+Cgp0eXBlZGVmIHN0cnVjdCBwaXhlbCB7CiAgICB1bnNpZ25lZCBjaGFyIHIsIGcsIGIsIHg7Cn0gcGl4ZWw7CgppbnQgbWFpbih2b2lkKQp7CiAgICBpbnQgd2lkdGggPSAxOTIwLCBoZWlnaHQgPSAxMDgwOwogICAgaW50IGxlbmd0aCA9IHdpZHRoICogaGVpZ2h0OwogICAgcGl4ZWwgKnBpeGVscyA9IChwaXhlbCopbWFsbG9jKGxlbmd0aCAqIHNpemVvZihwaXhlbCkpOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewogICAgICAgIGludCBybmQgPSByYW5kKCk7CiAgICAgICAgcGl4ZWxzW2ldLnIgPSBybmQgJiAweEZGOwogICAgICAgIHBpeGVsc1tpXS5nID0gcm5kID4+IDggJiAweEZGOwogICAgICAgIHBpeGVsc1tpXS5iID0gcm5kID4+IDE2ICYgMHhGRjsKICAgICAgICBwaXhlbHNbaV0ueCA9IDA7CiAgICB9CgogICAgc3RydWN0IHRpbWV2YWwgdHYwLCB0djEsIHR2MiwgdHYzLCB0djQ7CgogICAgZ2V0dGltZW9mZGF5KCZ0djAsIE5VTEwpOwoKICAgIGZvciAoaW50IHkgPSAwOyB5IDwgaGVpZ2h0OyArK3kpCiAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCB3aWR0aDsgKyt4KSB7CiAgICAgICAgICAgIHBpeGVsICpwID0gJnBpeGVsc1t4ICsgeSAqIHdpZHRoXTsKICAgICAgICAgICAgcC0+ciBePSAweGZmOwogICAgICAgICAgICBwLT5nIF49IDB4ZmY7CiAgICAgICAgICAgIHAtPmIgXj0gMHhmZjsKICAgICAgICB9CgogICAgZ2V0dGltZW9mZGF5KCZ0djEsIE5VTEwpOwoKICAgIGZvciAoaW50IHggPSAwOyB4IDwgd2lkdGg7IHgrKykKICAgICAgICBmb3IgKGludCB5ID0gMDsgeSA8IGhlaWdodDsgKyt5KSB7CiAgICAgICAgICAgIHBpeGVsICpwID0gJnBpeGVsc1t4ICsgeSAqIHdpZHRoXTsKICAgICAgICAgICAgcC0+ciBePSAweGZmOwogICAgICAgICAgICBwLT5nIF49IDB4ZmY7CiAgICAgICAgICAgIHAtPmIgXj0gMHhmZjsKICAgICAgICB9CgogICAgZ2V0dGltZW9mZGF5KCZ0djIsIE5VTEwpOwoKICAgIHByaW50ZigiWS1YIHBhc3M6ICVkIHVzZWNcbiIsIDEwMDAwMDAgKiAodHYxLnR2X3NlYyAtIHR2MC50dl9zZWMpICsgdHYxLnR2X3VzZWMgLSB0djAudHZfdXNlYyk7CiAgICBwcmludGYoIlgtWSBwYXNzOiAlZCB1c2VjXG4iLCAxMDAwMDAwICogKHR2Mi50dl9zZWMgLSB0djEudHZfc2VjKSArIHR2Mi50dl91c2VjIC0gdHYxLnR2X3VzZWMpOwoKICAgIHJldHVybiAwOwp9Cg==