« 二足のわらじ | トップページ | 若さゆえの構想と妄想と暴走(その②) »

2011年4月13日 (水)程々に

おはようございます。本日の当番、新人プログラマーのS.Kです。

最近、友人からとある栄養ドリンクを頂きました。
その栄養ドリンクですが、なんと従来のモノの数十倍の効果があるとのこと。

どれ程の効果があるのかと思い、早速、昼食後に飲んでみたのですが、眠気さっぱり、そして・・・お、お腹が・・・。

この栄養ドリンクは僕には効果があり過ぎたようです。

やっぱり何事も程々がいいですね。


と言う訳で、今回は程々な感じのC++での小技を一つ紹介しようかと思います。
既に知っていたり、必要ないって方はご愛嬌。


例えば、とある関数内の処理時間を計測したいことってあります・・・よね?

そんな時はこんな感じに計測開始と終了を指定すると思います。
※時間計測クラス(CStopwatch)が既に存在するとします。
void Function(void)
{
  CStopwatch Stopwatch;

  Stopwatch.Start();

  ~~何らかの処理~~

  int iTime = Stopwatch.Get();
  printf( "Time:%d\n", iTime );
}


でも、計測個所が多い場合は毎回、これを書いていくのが面倒ですよね。
そんな時に役に立つのが今回の小技です。

先ず、計測を行うクラスを作成します。
内容はコンストラクタとデストラクタでそれぞれ計測の開始と終了を行うだけです。
class CHoge
{
public:
  CHoge(void)
  {
    m_Stopwatch.Start();
  }

  ~CHoge(void)
  {
    int iTime = m_Stopwatch.Get();
    printf( "Time:%d\n", iTime );
  }

private:
  CStopwatch m_Stopwatch;
};


さて今回の小技ですが、基本的にたったこれだけです。
これを使って先程と同じ計測を書くとこうなります。
void Function(void)
{
  CHoge Hoge();

  ~~何らかの処理~~
}


そう、先程は数行必要だった計測文がたった一行に早変わり!!

原理は簡単です。
一時変数として作成したHogeのコンストラクタが呼び出されて計測が開始します。
次にHogeの破棄時にデストラクタが呼び出され時間が出力されるというものです。


こんな感じに{}で挟んだ部分のみを簡単に計測する事も出来ます。
void Function(void)
{
  ~~何らかの処理~~

  {
    CHoge Hoge();

    ~~何らかの処理~~
  }

  ~~何らかの処理~~
}


今回は時間計測という使い方ですが、他にも色々と用途はあるかと思います。
基本的にはデバッグ関連で使用する形になるとは思いますが。


こういった楽をする為の小技を色々と覚えて、
少しでも楽にプログラムが打てるようになれば、と思う今日この頃です。

follow us in feedly
result = encodeURIComponent( "http://www.accessgames-blog.com/blog/2011/04/post-60e4.html" );document.write( "result = " , result );&media=https%3A%2F%2Ffarm8.staticflickr.com%2F7027%2F6851755809_df5b2051c9_z.jpg&description=Next%20stop%3A%20Pinterest">

| | コメント (0) | トラックバック (0)

« 二足のわらじ | トップページ | 若さゆえの構想と妄想と暴走(その②) »

プログラマー」カテゴリの記事

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: 程々に:

« 二足のわらじ | トップページ | 若さゆえの構想と妄想と暴走(その②) »