PC関係のメモ
Windowsのプログラミングでパフォーマンスを計測する際に使用するAPI / [programming]MTA/STAのCOMを一つのプロセスで混在させる場合 / [camera]ビアガーデンで飲み会 / [programming][C/C++]Boehm GC - C言語でガベージコレクト / [wish][book][programming]ソフトウェアテスト技法 / [wish][book][programming]ソフトウェア
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で撮影。
ホワイトバランスがマニュアルになったままだったけど結構キレイ。手ぶれが激しいのは酔っ払ってるから。

ソフトウェアテスト技法―自動化、品質保証、そしてバグの未然防止のために(ボーリス バイザー/Boris Beizer/小野間 彰/山浦 恒央)
ソフトウェア・テストの技法 第2版(J. マイヤーズ/M. トーマス/T. バジェット/C. サンドラー/Glenford J. Myers/Todd M. Thomas/Tom Badgett/Corey Sandler/長尾 真/松尾 正信)
