DLLファイルの役割と作り方〜中身・作り方・使い方を、言語をまたいで確かめた〜
DLLとは何か、なぜDLLにするのか、何の言語で作れるのか。小さなDLLを実際に作って確かめました。★C++とRustは1つのDLLに同居できます。ただし「公開する関数を明示しない」ときの壊れ方がmacOSとWindowsで正反対でした(macOSは1,688個も漏れる/Windowsは5個しか出ず使えない)。理由は逆なのに、対処は同じです。
プログラミングや3DCGで何か作りたいと思っているエンジニアがいます
DLLとは何か、なぜDLLにするのか、何の言語で作れるのか。小さなDLLを実際に作って確かめました。★C++とRustは1つのDLLに同居できます。ただし「公開する関数を明示しない」ときの壊れ方がmacOSとWindowsで正反対でした(macOSは1,688個も漏れる/Windowsは5個しか出ず使えない)。理由は逆なのに、対処は同じです。
拡張子を並べても違いは分かりません。同じライブラリを静的・動的の両方で作り、macOSとWindowsで実測しました。軸は「いつ名前が解決されるか」の1つだけ。★静的リンクは関数ではなくオブジェクトファイル単位で取り込むため、呼んでいない関数が16KiB付いてきます。★.dylibを.soに改名しても読めるので、決めているのは拡張子ではなく中身の形式でした。
FlutterからネイティブへC++で架けた橋を、そのままRustで架け替えて比べました。生のC ABIならRust 0.0089µs・C++ 0.0091µsで一致し、橋の材質は速度に関係ないと分かります。一方 flutter_rust_bridge は既定で1,442倍。さらにWindowsでは「渡った先が支配的」という前提が崩れ、Smart App Controlに阻まれてビルドすらできませんでした。
Cyclesを速くする11の設定を1つずつ足して、「何倍速くなったか」と「絵がどれだけ変わったか」を同時に測りました。絵をほぼ変えずに速くなったのは「ノイズ除去をGPUで走らせる」と「アダプティブのしきい値を緩める」の2つだけで、この2つだけで屋内1.71倍・屋外2.85倍になります。Fast GIは1.89倍速いが絵のズレが+52、タイル分割はむしろ遅い、ライトツリーは5000灯でも逆転しない、OptiXとCUDAの差は1.19倍——さらに「絵は変わらない」を画素単位で確かめ、差が反射・屈折の面に集中していることまで追いました。
BlenderのEEVEEとCyclesを、自作の屋内シーンとp973の街の2つで焼き比べました。Cyclesの高サンプルを「正解」に置いてズレを数値化したところ、EEVEEはサンプルを1から256に増やしてもズレが64.8→64.8とまったく動かず、Cyclesだけが40.9→4.5と下がりました。さらにノイズ除去を入れたCyclesは8サンプル・3.59秒でズレ2.8に到達します。ライトプローブの大きさとベイク時間の逆説、初回だけ15秒かかるシェーダキャッシュの正体まで、Blender 5.2 LTS・RTX 3060の実測で確かめた記録です。
組み込み開発でRustはどこまで実用になったのかを、①書けるか ②安全認証を通せるか ③現場が乗り換えるか の3層に分けて整理しました。Cortex-M3向けに「素のベアメタル」「cortex-m-rt」「Embassy」の3つの書き方で同じプログラムを作り、QEMUで動かして実測。短く書けるほど焼かれるサイズが大きくなる関係や、Ferroceneの認証、AUTOSAR互換RTOSが無い問題まで、目的別の判断表にまとめています。
MediaPipeで mp.solutions が無くなり、昔のコードが動かなくなった人向けのガイドです。0.10.21・0.10.31・0.10.35・1.0.0 の4バージョンを実際に入れて、いつ消えたのか、同梱モデルが22個から0個になったこと、face_landmarker.task や hand_landmarker.task をどこから入手してどう使い分けるのかを実測でまとめました。.taskファイルを自分で作る方法まで。
BlenderのGeometry Nodesで作った街に、道路の実体・地面の高低差・建物4種の作り分けを段階的に足しながら、そのたびに「ノードの再計算」と「ビューポート描画」を分けて実測しました。面数が減ったのに描画が2.3倍になった話、Raycastの重さが隣のノードに計上される話、実体化すると描画は10倍速いのに再計算は3.6倍になる話まで、480m四方・78,809個の街で確かめた記録です。
Blender 5.2 LTSの新機能をRTX 3060で実際に触りました。ノードベース物理で板が布になる様子、Cyclesのテクスチャキャッシュでメモリが70.6%減った実測、Mesh BevelとThin Wallのbefore/afterまで画像つきで。1か月前に調べただけで書いた予測記事の答え合わせでもあります。
互換レイヤーを使わず、Mac版Steamだけでどこまで遊べるのかを実測しました。ネイティブかRosettaかを見分ける手順と、同じゲームがSteam経由だとRosettaで動き、直接起動するとネイティブで動くという結果まで。CPU時間は1.44倍でした。
Whiskyの開発が終わったあと、Macで何を入れ直せばいいのかを実測でまとめました。移行先ごとの導入容量と所要時間、22GBのボトルのうち持ち出す価値があるのは2.7MBだけだったこと、そして同じWarframeがWine 11.14では起動すらしないのに11.13では動くという結果まで。