Advertisement
Lynix

Comparaison else if/switch

Jan 30th, 2013
165
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.83 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. #define ITERATION_COUNT 10000000
  6.  
  7. int ReadString(char* str, int arraySize);
  8.  
  9. int main()
  10. {
  11.     /*
  12.     ** Pour éviter au compilateur d'être trop sauvage sur les optimisations
  13.     ** et de donner un temps d'exécution nul, on prend une variable donnée par l'utilisateur.
  14.     */
  15.  
  16.     char str[50];
  17.     char c;
  18.     int i, iteration, length;
  19.     clock_t t1_1, t1_2;
  20.     clock_t t2_1, t2_2;
  21.  
  22.     printf("Entrez une chaine (50 caracteres max): ");
  23.     length = ReadString(str, 50);
  24.     fflush(stdin); /* Vade retro Léonidas */
  25.  
  26.     /* L'algorithme ici est débile, il transforme une lettre en une autre, rien de plus */
  27.  
  28.     /* if/else if */
  29.     t1_1 = clock();
  30.     for (iteration = 0; iteration < ITERATION_COUNT; ++iteration)
  31.     {
  32.         for (i = 0; i < length; ++i)
  33.         {
  34.             if (str[i] == 'a')
  35.                 c = 'p';
  36.             else if (str[i] == 'b')
  37.                 c = 'o';
  38.             else if (str[i] == 'c')
  39.                 c = 'i';
  40.             else if (str[i] == 'd')
  41.                 c = 'u';
  42.             else if (str[i] == 'e')
  43.                 c = 'y';
  44.             else if (str[i] == 'f')
  45.                 c = 't';
  46.             else if (str[i] == 'g')
  47.                 c = 'r';
  48.             else if (str[i] == 'h')
  49.                 c = 'e';
  50.             else if (str[i] == 'i')
  51.                 c = 'z';
  52.             else if (str[i] == 'j')
  53.                 c = 'a';
  54.             else if (str[i] == 'k')
  55.                 c = 'm';
  56.             else if (str[i] == 'l')
  57.                 c = 'l';
  58.             else if (str[i] == 'm')
  59.                 c = 'k';
  60.             else if (str[i] == 'n')
  61.                 c = 'j';
  62.             else if (str[i] == 'o')
  63.                 c = 'h';
  64.             else if (str[i] == 'p')
  65.                 c = 'g';
  66.             else if (str[i] == 'q')
  67.                 c = 'f';
  68.             else if (str[i] == 'r')
  69.                 c = 'd';
  70.             else if (str[i] == 's')
  71.                 c = 's';
  72.             else if (str[i] == 't')
  73.                 c = 'q';
  74.             else if (str[i] == 'u')
  75.                 c = 'n';
  76.             else if (str[i] == 'v')
  77.                 c = 'b';
  78.             else if (str[i] == 'w')
  79.                 c = 'v';
  80.             else if (str[i] == 'x')
  81.                 c = 'c';
  82.             else if (str[i] == 'y')
  83.                 c = 'x';
  84.             else if (str[i] == 'z')
  85.                 c = 'w';
  86.             else
  87.                 c = '?';
  88.  
  89.             str[i] = c;
  90.         }
  91.     }
  92.     t1_2 = clock();
  93.  
  94.     /* switch */
  95.     t2_1 = clock();
  96.     for (iteration = 0; iteration < ITERATION_COUNT; ++iteration)
  97.     {
  98.         for (i = 0; i < length; ++i)
  99.         {
  100.             switch (str[i])
  101.             {
  102.                 case 'a':
  103.                     c = 'p';
  104.                     break;
  105.  
  106.                 case 'b':
  107.                     c = 'o';
  108.                     break;
  109.  
  110.                 case 'c':
  111.                     c = 'i';
  112.                     break;
  113.  
  114.                 case 'd':
  115.                     c = 'u';
  116.                     break;
  117.  
  118.                 case 'e':
  119.                     c = 'y';
  120.                     break;
  121.  
  122.                 case 'f':
  123.                     c = 't';
  124.                     break;
  125.  
  126.                 case 'g':
  127.                     c = 'r';
  128.                     break;
  129.  
  130.                 case 'h':
  131.                     c = 'e';
  132.                     break;
  133.  
  134.                 case 'i':
  135.                     c = 'z';
  136.                     break;
  137.  
  138.                 case 'j':
  139.                     c = 'a';
  140.                     break;
  141.  
  142.                 case 'k':
  143.                     c = 'm';
  144.                     break;
  145.  
  146.                 case 'l':
  147.                     c = 'l';
  148.                     break;
  149.  
  150.                 case 'm':
  151.                     c = 'k';
  152.                     break;
  153.  
  154.                 case 'n':
  155.                     c = 'j';
  156.                     break;
  157.  
  158.                 case 'o':
  159.                     c = 'h';
  160.                     break;
  161.  
  162.                 case 'p':
  163.                     c = 'g';
  164.                     break;
  165.  
  166.                 case 'q':
  167.                     c = 'f';
  168.                     break;
  169.  
  170.                 case 'r':
  171.                     c = 'd';
  172.                     break;
  173.  
  174.                 case 's':
  175.                     c = 's';
  176.                     break;
  177.  
  178.                 case 't':
  179.                     c = 'q';
  180.                     break;
  181.  
  182.                 case 'u':
  183.                     c = 'n';
  184.                     break;
  185.  
  186.                 case 'v':
  187.                     c = 'b';
  188.                     break;
  189.  
  190.                 case 'w':
  191.                     c = 'v';
  192.                     break;
  193.  
  194.                 case 'x':
  195.                     c = 'c';
  196.                     break;
  197.  
  198.                 case 'y':
  199.                     c = 'x';
  200.                     break;
  201.  
  202.                 case 'z':
  203.                     c = 'w';
  204.                     break;
  205.  
  206.                 default:
  207.                     c = '?';
  208.                     break;
  209.             }
  210.         }
  211.     }
  212.  
  213.     t2_2 = clock();
  214.  
  215.     printf("Version \"else if\": %g\n", ((float) (t1_2-t1_1)) / CLOCKS_PER_SEC);
  216.     printf("Version switch   : %g\n", ((float) (t2_2-t2_1)) / CLOCKS_PER_SEC);
  217.  
  218.     getchar(); /* Une attente si CodeBlocks n'est pas bien réglé */
  219.     return 0;
  220. }
  221.  
  222. int ReadString(char* str, int arraySize)
  223. {
  224.     int c;
  225.     int i;
  226.     int maxLength = arraySize-1;
  227.     char* ptr = str;
  228.  
  229.     fflush(stdin); /* El diablo */
  230.     for (i = 0; i < maxLength; ++i)
  231.     {
  232.         c = getchar();
  233.         if (c == '\n' || c == EOF)
  234.             break;
  235.  
  236.         *ptr++ = (char) c;
  237.     }
  238.  
  239.     *ptr = '\0';
  240.  
  241.     return i;
  242. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement