Advertisement
Guest User

Optimization test

a guest
Dec 20th, 2013
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.65 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <time.h>
  3.  
  4. // Décommenter le code à tester
  5.  
  6. /*
  7. // Pouet_forever
  8. int main(void) { // Sans optimisation : 1350 / Avec O1 : 530
  9.     char s[] = "000001100000";
  10.     unsigned rule = 0x1E;
  11.     unsigned ngen = 10000000;
  12.     unsigned i, j, n;
  13.  
  14.     clock_t t = clock();
  15.  
  16.     for (i = 0; i < ngen; i++) {
  17.         n = 0;
  18.     for (j = 0; s[j]; j++) {
  19.             n = ((n << 1) | ((s[j] - '0') << 1) | (s[j + 1] ? (s[j + 1] - '0') : 0)) & 0x7;
  20.             s[j] = (((rule & 0xFF) >> (n & 0x7)) & 1) + '0';
  21.         }
  22.     }
  23.  
  24.     printf("%lf", (double) clock() - t);
  25.     return 0;
  26. }
  27. */
  28. /*
  29. // Nelxiost
  30. int main(void) { // Sans optimisation : 1080 / Avec O1 : 460
  31.     char gen[] = "-----oo-----";
  32.     unsigned char rule = 0x1E;
  33.     int i, j, tmp, ngen = 10000000;
  34.  
  35.     clock_t t = clock();
  36.  
  37.     for (i = 0; i < ngen; ++i) {
  38.         tmp = (gen[0] == 'o' ? 1 : 0);
  39.         for (j = 0; gen[j] != '\0'; ++j) {
  40.             tmp = (tmp << 1 | (gen[j+1] == 'o' ? 1 : 0)) & 0b111;
  41.             gen[j] = (rule & (1 << tmp) ? 'o' : '-');
  42.         }
  43.     }
  44.  
  45.     printf("%lf", (double) clock() - t);
  46.     return 0;
  47. }
  48. */
  49. /*
  50. // Combinaison
  51. int main(void) { // Sans optimisation : 1050 / Avec O1 : 440
  52.     char s[] = "000001100000";
  53.     unsigned rule = 0x1E;
  54.     unsigned ngen = 10000000;
  55.     unsigned i, j, n;
  56.  
  57.     clock_t t = clock();
  58.  
  59.     for (i = 0; i < ngen; i++) {
  60.         n = (s[0] - '0') << 1;
  61.         for (j = 0; s[j]; j++) {
  62.             n = ((n << 1) | (s[j + 1] ? (s[j + 1] - '0') : 0)) & 0x7;
  63.             s[j] = (((rule & 0xFF) >> n) & 1) + '0';
  64.         }
  65.     }
  66.  
  67.     printf("%lf", (double) clock() - t);
  68.     return 0;
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement