Windowsのプログラミングでパフォーマンスを計測する際に使用するAPI / MTA/STAのCOMを一つのプロセスで混在させる場合 / ビアガーデンで飲み会 / Boehm GC - C言語でガベージコレクト / ソフトウェアテスト技法 / ソフトウェア
投稿日: 2006年08月30日 更新日: 2017年07月22日
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やデータビズが好きです。このサイトは宮内の個人的なメモです。
人気記事ランキング
- IP Messengerで通信できない件
- Softerra LDAP Browser - Windows用のフリーなLDAPブラウザ
- パスからファイル名を取得する / INIファイルの保存ディレクトリを取得する
- rhs, lhs / 変数名を考えるときに役に立ちそうなページ
- ファイル選択ダイアログで落ちる / ファイル選択ダイアログで落ちる(2) / ファイル選択ダイアログで落ちる(3) / ファイル選択ダイアログで落ちる(4) / 日本語の作文技術
- realloc()の正しい使い方
- PHPで生成されたページにContent-Lengthを出力する / 住所検索 / RSS1.0のMIMEタイプ / PHPであることを示すヘッダを削除
- rsyncで圧縮転送すると遅くなる
- 巨大ファイルを扱えるバイナリエディタ / Stirlingの構造体エディット機能 / CListCtrlの仮想リスト
- MacでSJISネイティブ対応のエディタを探してみた