Windowsのプログラミングでパフォーマンスを計測する際に使用するAPI / MTA/STAのCOMを一つのプロセスで混在させる場合 / ビアガーデンで飲み会 / Boehm GC - C言語でガベージコレクト / ソフトウェアテスト技法 / ソフトウェア

投稿日: 2006年08月30月

Windowsのプログラミングでパフォーマンスを計測する際に使用するAPI

VC++で作ったツールで速度の計測をすることになった為、ミリ秒単位の時間を取得するAPIを探したときのメモ。

使えそうなAPI

  • GetTickCount()
  • timeGetTime()
  • QueryPerformanceCounter()

実際に使用したAPIはGetTickCount()。このAPIの精度は10ミリ秒程度だけど今回は十分。

MTA/STAのCOMを一つのプロセスで混在させる場合

MTAなCOMとSTAなCOMを使うことになったのでメモ。

結論としては、MTA/STAなCOMを同一スレッドで混在させることができないがスレッドが別なら問題ない。

CodeGuru Forums - ::CoInitializeEx() and AfxInitRichEdit() cannot co-exist?

例えばSTAなCOMであるリッチエディットコントロールを使用する場合、メインスレッドは(AfxInitRichEdit()によって)STAとして初期化される為、メインスレッド内でMTAなCOMを使用(初期化)するとアプリケーションエラーが発生する。デバッグウインドウにはRPC_E_CHANGED_MODEというエラーコードが出力される。アパートメントモデルを変更するなゴルァという警告である。

そこで、別スレッドを立ててCoInitialize(NULL, COINIT_MULTITHREADED)した後MTAなCOMのメソッドを使ったところ今のところ問題なく動作してるっぽい。

MTAのCOMを使う場合はInitinstance内でCoInitializeEx()しましょうという話?

ビアガーデンで飲み会

今年初のビアガーデン。 去年は何回か行ったけど、今年は飲みに行く回数自体少なかったので初ガーデン。

写真はCanon EOS Kiss Digital N TAMRON AF18-200mm F/3.5-6.3 XR Di IIで撮影。

ホワイトバランスがマニュアルになったままだったけど結構キレイ。手ぶれが激しいのは酔っ払ってるから。

Boehm GC - C言語でガベージコレクト

A garbage collector for C and C++

公式として紹介されているsgiのサイトが見れないのでhpのサイトをメモ。

ソフトウェアテスト技法

ソフトウェア

名前:宮内 はじめ

Code for Nagoya名誉代表

E2D3名古屋支部長

プログラマーです。GISやデータビズが好きです。このサイトは宮内の個人的なメモです。

プロフィール

お問い合わせ