2020-02-01から1ヶ月間の記事一覧
mozjpegを使った画像変換ソフト、開発が一段落した。 以下に121個のpngファイルを処理した場合の例を示す。64bit版では約6秒で全ファイルの処理が終わった。 MozJpegGUI 64bit ver. example なお、32bit版と64bit版を作ったが処理速度は以下のように64bit版…
Visual Studioの出力ウィンドウに文字を出力する_RPT系関数は便利だが、なぜかTCHAR版が無い。 (_RPT系関数の参考) donadona.hatenablog.jp 仕方ないので、TCHAR版を作ってみた。なお、毎回_CRT_WARNを書くのが面倒だったので入力不要としている。別のもの…
Semaphoreの参照カウント数を知るために、カウント数を保持するクラスを作ってみたのだがうまくカウントしてくれない。原因を調べるために、CMultiLockのコードを読んでみたらびっくりした。Unlock()とかはCSyncObjectクラスのUnlock()を呼び出すようになっ…
CEventとCMultiLock::IsLocked()の組み合わせでちょっと悩んだのでメモ。 CSemaphoreオブジェクトAのLock待ち中にAbortできるよう、以下のように組んだ。 悩んだのは、IsLocked()。Microsoftのドキュメントでは"Nonzero if the specified object is locked; …
Visual StudioにてC / C++のプログラミングをする際に、32bit向けと64bit向けでコードを変えたくなる場合がある。切り替え自体は当然#ifdefでやるのだが、どの定数で判定するのが良いのだろうか?以下、整理してみた。情報ソースはマイクロソフトの以下記事…
Visual Studioのリソースエディタで、ダイアログのクラスを追加しようとして「クラスの追加」を選び必要事項を入力したら、「クラスが登録されていません」というエラーがでてしまった。 クラスが登録されていません 直接の原因はわからないが、適切なプロジ…
マルチスレッド関連の実装方法に迷いが生じたので、ちょっと考えを整理する。 ■やりたいことは何か やりたいことはスレッドからスレッドへの通知?いや違う。それは手段であって、目的ではない。やりたいのは、 処理Aが終了したあと、その結果を使う処理Bを…
SendMessageやPostMessageにてメッセージを投げてから受け取るまでにかかる時間を調べてみた。Ryzen3700X @ Windows10 Prof. 1909では、SendMessage: 20us, PostMessage: 34usだった。SendMessageのほうが早いのは、WindowProcedureを速やかに呼ぶかららしい…
どういうふうにスレッドの制御をするか考え中。今回のソフトは、タスクごとにスレッドを作ってしまうという富豪方針である。ということは、リソースに見合った数のスレッドが常に走っているようにスレッドを生成し続ければよい。これを実現するには、ワーカ…
どのようにマルチスレッド化するかを考え中。 考えられる方針は大きく2つ。 ファイルを1個開くたびに1スレッド作り、1変換をするたびに1スレッドを作り、1個書き出すたびに1スレッド作る。ブルジョワ方針。 物理メディアごとに1スレッド作り、当該メディアで…
libPNGについて、win32とx64で速度が違うのか調べてみた。 ■使用環境 OS: Windows10 64bit バージョン1909 CPU:Ryzen 7 3700X 3.6GHz メモリ: PC10700 (1088MHz) ■計測方法 libPNGのRUN_TESTS所要時間を3回計測する。ビルドはいずれもRelease。 ■計測結果 wi…
画像ファイルのロード、変換、保存をする部分の構造はどうしようかなあ。最近のPCはCPUのコア数が多いので、できればマルチスレッド対応としたい。その場合、どういうプログラム構成とすればいいのだろう? データ処理の流れはシンプルだ。 二次記憶からデー…
CToolTipCtrlのAddTool()を使ってツールチップを表示させようとしたときに、文字列が長い場合は指定した位置で改行したくなる・・よね?でも、テキストに\nを加えても改行してくれず、ちょっと苦労したのでメモ。 CToolTipCtrlを使って複数行にわたるテキス…
MFCを使う場合の多言語化メモ。以下の英語版より抜粋。 docs.microsoft.com マイクロソフトによると、言語ごとのリソースはリソース専用DLLに格納すればいいらしい。そうすると、以下の順番でリソースの読み込みにチャレンジしてくれる。 GetUserDefaultUILa…
cjpegで設定可能なオプションは色々あるが、互いに排他的なものも結構ある。しかし、どれがそうなのかは明示されていない。そこでcjpeg.cを読んで整理してみた。Groupに番号が振ってあるものは、同じ番号内で相互に影響を及ぼすもの。 Option variables Grou…
mozjpegを使ったwindows用の画像変換ソフトで、以下を満たすものを探したが見つからなかった。 Windows用 GUI 複数の画像ファイルを一括変換 入力ファイルはJPEG, PNG, GIF, BMP マルチスレッドにより複数同時圧縮 無いなら作ればいいじゃん、ということで開…