#99 Article 988 Posted at 1995/12/07 01:34:04 by 理科算数 (MAP3702) [SAHOU.1]

Subject: Re:*6 プログラミングお作法の話 /946 ... /941 /940

えー、とても勉強になりそうな企画なので、教えを請いたいと思います。



例えば、


例1

/* 前略 (Article 956 Mick'n さんのソースからの拝借(^^; ) */

  for (i = 1; i <= atoi(argv[1]); i++) {
    if (i == 3 || i == 5 || i == atoi(argv[1])) {
      for (j = 0; j < i; j++) printf("にゃん");
      putchar('\n');
    } else {
      printf("%d\n", i);
    }
  }

/* 以下、略 */


というソースを、


例2

/* 前略 ( atoi(argv[1]) > 5 を仮定 )  */

  for (i = 1; i <= 5; i++) {                      /* 1 - 5 の処理 */
    if (i == 3 || i == 5) {
      for (j = 0; j < i; j++) printf("にゃん");
      putchar('\n');
    } else {
      printf("%d\n", i);
    }
  }
  
  for (i = 6; i < atoi(argv[1]) ; i++) {          /* 6 以降の処理 */
    printf(%d\n", i);
  }
  
  for(j = 0; j < atoi(argv[1]) ; j++)             /* 最後の部分の処理 */
    printf("にゃん");
  putchar('\n');
  
/* 以下、略 */


 というように書き換えれば、atoi(argv[1]) が非常に大きい値ならば、実用
上はともかく、原理的には処理が軽くなるように、素人の私としましては思え
るわけです。
 質問は、この思いこみが正しいのかということと、例1のようなソースをコ
ンパイルしたとき、例2のように勝手に最適化してくれるのでしょうかという
ことです。
 それとも、最適化というのは、上記であげたようなこととは関係ないのでしょ
うか。


                        理科算数