プログラムとかデジタル系趣味とか

template実装のdllexportとパフォーマンス

通常、あまりtemplateクラスをdllexportすることはないと思いますが、仮にした場合、VCコンパイラが警告を言ってきます。
DLL利用側のコンパイル時に、ヘッダーの内容が変わっているとテンプレート実装が変わってしまう可能性があるので、その警告です。

実は、template class __declspec(dllexport) CHoge;と、実装をエクスポート指定することができる。
しかし、これって実装はDLL側にあるから、利用側はdllimport指定することで、おそらくコンパイルしない。
結果モジュール間での関数呼び出しになるから呼び出しのコストがあるよなって思って、テストしたんですが案の定でした。


※ベクトルのNormalizeを1テストあたり1000万回行い、それを20回行った際の最小、平均、最大

場合によっては警告出てても、「DLLビルドとEXEビルドに同じの使ってるからいいねん!」ってやるしかないよな。
そう思った。

汚えテストコードはこちら。
github.com

Windowsシェル拡張DLLが作りたい。

作りたいっていうか、ほしい機能があるので、作ろうと思った。
とりあえずMicrosoft Learnとか読んだけど、まずCOMをちゃんと理解しないとあかんみたい。

COMなんかActiveXとかDirectXとかでなんとなくに使ってるくらいで、作るってのはやったことないな。
ActiveXは作るに該当するけど、COM周りを自分で作ってるわけじゃないしな)

このあたりとか
learn.microsoft.com
このあたりとか読んでる
learn.microsoft.com

ダウンロードしたVulkanSDKでWindows向けにプログラムを作成する際のメモ

shadercやspirv crossを使う際はsharedライブラリを使う。

上記のライブラリがMDのCRTでビルドされているため。
解決には自分でビルドするか、Shread版を使うしかない。
shadercは特に気にする必要がないが、spirv crossに関してはC版を使わないとshared版だけではリンク解決できない。

新しい趣味、電子工作はじめました

f:id:misakichi-k:20211125211345j:plain
電子工作はじめました。
もともと高校が情報と電気の間みたいな科だったので、ある程度はかじっていたのですが。
プログラムはさんざん仕事でも触るし、あんまり趣味でやり始めても完成まで持っていかないんですよね。
若い頃の熱意がない。

最近オーディオに凝ってるのもあるので、自分でオペアンプ使ってアンプでも作ってみようかと。

とりあえず、こんなかんじで。
f:id:misakichi-k:20211125211757p:plain

まずはACアダプタから、スイッチ通して電源確認用のLEDの接続、確認。
OK。
ステレオミニプラグメスから可変抵抗器接続。
OK。
オペアンプ回路組み込み。
NG。

出力が0。
はて・・・・?

そもそも初めて自分でやろうとしてて、詳しく知らなかった。
オペアンプには単電源用と両電源用っていうのがあるんですね。
両電源っていうのはマイナスの電圧なんですね。
それで動いてないのかな・・・。

いや、これACアダプタだし。
ネットで方法探そう。
でも全回路図そのまま使うのだけはしないぞ。
コンデンサもとりあえず無しでやって、コケて必要性を感じてから使うんだ。

Master Box NR200P(公称最大グラボサイズ330mm)に、Radeon RX 6800 XT Phantom Gaming D 16G OC(ボード長330mm)を入れる。

  • 結論!


PCを今年買い換えて、AMD CPUに戻ったにもかかわらず。
世の中にGPUが全然売ってなくて買えなかったあの頃も過ぎ。
ついにGPUを購入しました。
f:id:misakichi-k:20210908222352j:plain
ASRock Radeon RX 6800 XT Phantom Gaming D 16G OC!!

続きを読む

エチケットカッター ER-GN70を購入した話

エチケットカッター。
というよりは、鼻毛カッター
この度PanasonicのER-GN70を購入いたしました。
今回、鼻毛の話なので、あまりキレイな話じゃないかも。

  • 経緯
  • 出会い
  • 感想
続きを読む