実行時間差について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
みるく

実行時間差について

#1

投稿記事 by みるく » 13年前

C言語について学びはじめたばかりのものです。
質問にはいるのですが、
同じ仕事をする関数(たとえばprintfとputs)
でも、なぜ、実行時間差が発生するのでしょうか。
これらはなにか意味があるのでしょうか、
ほかにも、同じ仕事をするのに、実行時間差が生じるものはあるとおもいます。

すみません。初心者なのでわかりやすい説明をおまちしています。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 実行時間差について

#2

投稿記事 by softya(ソフト屋) » 13年前

着眼点は悪くないですね。ただ、実際に速度差を計測してみましたか?
幾つかバリエーションで速度差を実際に計測してみてください。
次に勉強のためには、なぜ速度差が生じるのか推測を立てることが重要です。
何が原因だと予想しますか? 思いつくものを書き並べてみてください。

【補足】
計測の仕方次第ではコンソール出力の問題でputsが不利になることもあります。
同条件に持ち込めればprintfとの差が小さい場合も大きな差が出る場合もあることが分かると思います。
自分で実際に確かめることが科学の実験同様にプログラミングでも重要です。

「時間測定関数の性能(分解能と最大値)のまとめ」
http://www.hiramine.com/programming/win ... rison.html
timeGetTime()とtimeBeginPeriod(1);を使ってください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

box
記事: 2002
登録日時: 15年前

Re: 実行時間差について

#3

投稿記事 by box » 13年前

みるく さんが書きました: 同じ仕事をする関数(たとえばprintfとputs)
まあ、標準出力に出力する、という点だけを取れば「同じ仕事をする」と
いえるのかもしれませんが、実際に行なっていること(関数の中身:実装)はかなり異なっていそうです。

putsはchar *型だけを相手にしますが、
printfはchar *型以外の型も相手にしますし、書式文字列に見合う形に変換するのに
時間がかかりそうです。

学習を進めていくうちに、例えば「何かをソートする」という同じ仕事をする
関数(アルゴリズム、という方が適切かもしれません)においても、実装によって
実行時間がずいぶん異なる、というようなことがおわかりになってくると思います。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

閉鎖

“C言語何でも質問掲示板” へ戻る