for文やwhile文について
Re:for文やwhile文について
意味が分かりません、機械語で何バイトという意味でしょうか?
そういう意味なら、使うコンパイラ、CPU、最適化レベル、書かれているソースコードの内容で変わるので質問自体が無意味です。
そういう意味なら、使うコンパイラ、CPU、最適化レベル、書かれているソースコードの内容で変わるので質問自体が無意味です。
Re:for文やwhile文について
すみません。質問変えて
int func(void)
{
int func(void)
{
とどちらが軽いとしたらどちらでしょうか?
int func(void)
{
int i;
int flag=1;
int n;
for(i=0;i<10;i++)
{
if(flag)
{
n++; [pre] }
if(i=i%2)
{
flag=0;
} [pre]
}}と
int func(void)
{
int i;
int n;
for(i=0;i<10;i++)
{
if(i=i%2)
{
n++;
break;
}
[pre]
}
for(i=0;i<10;i++)
{
if(i=i%2)
{
n++;
}
}}
とどちらが軽いとしたらどちらでしょうか?
Re:for文やwhile文について
文間違えました。
int func(void)
{
int func(void)
{
とどちらが軽いとしたらどちらでしょうか?
int func(void)
{
int i;
int flag=1;
int n;
for(i=0;i<10;i++)
{
if(flag)
{
n++;
}
if(i=i%2)
{
flag=0;
} [pre]
}}と
int func(void)
{
int i;
int n;
for(i=0;i<3;i++)
{
if(i=i%2)
{
n++;
break;
}
}
for(;i<10;i++)
{
if(i=i%2)
{
n++;
}
}}
とどちらが軽いとしたらどちらでしょうか?
Re:for文やwhile文について
どちらのプログラムもifの条件がおかしいんだけど。
> if(i=i%2)
正しくは"if(i==(i%2))"じゃないのかな?
何がしたいのかさっぱり分からないプログラムだけど、ループの実行回数も大差ないし一緒と考えてもいいと思いますけど。
> if(i=i%2)
正しくは"if(i==(i%2))"じゃないのかな?
何がしたいのかさっぱり分からないプログラムだけど、ループの実行回数も大差ないし一緒と考えてもいいと思いますけど。
Re:for文やwhile文について
コンパイルを通るように直して、それぞれ実行してみてください。
実行時間に差がありましたか?
現在のあなたにとっては、それ以上の差はありません。
もっと詳しく知りたいならば、もっと言語を理解してから質問しましょう。
また、処理が遅くて困っているプログラムがあるならば、それについて
具体的な質問をしてくれれば、回答のしようもあると思います。
実行時間に差がありましたか?
現在のあなたにとっては、それ以上の差はありません。
もっと詳しく知りたいならば、もっと言語を理解してから質問しましょう。
また、処理が遅くて困っているプログラムがあるならば、それについて
具体的な質問をしてくれれば、回答のしようもあると思います。
Re:for文やwhile文について
どんな機械語コードが出ているか見たければ、
「プロジェクト」→「xxxのプロパティ」→「構成プロパティ」→「C/C++」→「出力ファイル」→「アセンブリの出力」を「あり」にすればアセンブラソースが見れます。
それを見て効率的がコード出ているか判断すれば良いと思います(アセンブラは勉強してください)。
※ リリースビルドしないと最適化されないなので必ずリリースビルドで行ってください。
今のコードで比べても無意味なことが分かると思います。
生半可な知識で書き方を工夫してもコンパイラの最適化が上を行きます。あからさまに無駄な書き方、遅いアルゴリズムを選ばない限りはコンパイラにお任せしましょう。
「プロジェクト」→「xxxのプロパティ」→「構成プロパティ」→「C/C++」→「出力ファイル」→「アセンブリの出力」を「あり」にすればアセンブラソースが見れます。
それを見て効率的がコード出ているか判断すれば良いと思います(アセンブラは勉強してください)。
※ リリースビルドしないと最適化されないなので必ずリリースビルドで行ってください。
今のコードで比べても無意味なことが分かると思います。
生半可な知識で書き方を工夫してもコンパイラの最適化が上を行きます。あからさまに無駄な書き方、遅いアルゴリズムを選ばない限りはコンパイラにお任せしましょう。