十数年も経過するので、今時のコンパイラなら意識するまでもなく実装している。
特に教科書然としたものなどで例に挙げられるような単純なケースなら確実に最適化がされる。
実際問題どんな状況なのかを調べてみることにした。
test_rvo_nrvo
これは vc だが相変わらず分岐を挟むと残念なことになるようだ。
しかし、gcc と clang で確認を行うと分岐があるにも関わらずきっちり最適化がされる。
---
const correctness について、ここでは関数の戻り型が焦点となる。
const なポインタや参照を返す場合、やはり一抹の不安が残る。
回避するにはコピーを返せばいいのだが、rvo または nrvo が効くか否かが
重要な場面も多々ある。
要はパフォーマンス問題に帰着する。
API の設計に統一性を持たせたいのだが、クロスプラットフォームだと
足を引っ張ってる方に合わせるしかないかな。
---
(追記)
と少し錯乱していたが、vc だけ少し特殊なことをすれば恩恵を授かることができた。
面倒くさい・・・。
2016年10月4日火曜日
2016年9月24日土曜日
shared_from_this を ctor から呼んでみる
言うまでもなく常識的に考えれば不味いことは一目瞭然。
構築が完了していないので strong_ref もクソもない。
あるクラスを RAII で設計していた際に遭遇したが
バッドノウハウからも得られるものがあるだろうということで興味本位に探してみる。
https://forum.libcinder.org/topic/solution-calling-shared-from-this-in-the-constructor
unfortunately this is not a reliable solution. See post below.
と注意書きがあるので真似しちゃダメではあるが
参照カウンタを騙す・・・ああ、その発想自体に脱帽だよ!
2016年9月13日火曜日
How to Survive 2 を ps3 コントローラでプレイ
表題の件の前提として、
Steam の他ゲームは x360ce 経由で普通に動作しているが
このゲームだけは動作しないという人向け。
先ずは原因から記載すると、
・ 64bit ゲームなので x360ce for 64-bit games が必要
・ 動作させるには xinput9_1_0.dll が必要なのに最新版では生成ができない
なければ生成すればいいじゃないということで本題に。
(1) x360ce 3.2.8.76(for 64-bit games) をダウンロード(use google!)
(2) x360ce でコントローラ設定を行う(ここはいつも通り)
(3) Game settings タブを開く
(4) Add ボタンで HowToSurvive2.exe を登録
(5) 64-bit v9.1を選択
このタイミングで Synchronize Settings が表示される。
※最新バージョンでは表示されない
(6) Synchronize Settings を押す
ここでOKを押せば、(5) でチェックした xinput9_1_0.dll が (4) で登録したパスに生成される。
(7) x360ce_x64.exe と同じ場所に x360ce.ini が生成されるので、上記のパスに手動コピー。
Windows10 x64 環境での動作は確認。
ドイツ人とがっつり遊んだ!
Steam の他ゲームは x360ce 経由で普通に動作しているが
このゲームだけは動作しないという人向け。
先ずは原因から記載すると、
・ 64bit ゲームなので x360ce for 64-bit games が必要
・ 動作させるには xinput9_1_0.dll が必要なのに最新版では生成ができない
なければ生成すればいいじゃないということで本題に。
(1) x360ce 3.2.8.76(for 64-bit games) をダウンロード(use google!)
(2) x360ce でコントローラ設定を行う(ここはいつも通り)
(3) Game settings タブを開く
(4) Add ボタンで HowToSurvive2.exe を登録
(5) 64-bit v9.1を選択
![]() |
| fig1. |
このタイミングで Synchronize Settings が表示される。
※最新バージョンでは表示されない
(6) Synchronize Settings を押す
![]() |
| fig2. |
![]() |
| fig3. |
(7) x360ce_x64.exe と同じ場所に x360ce.ini が生成されるので、上記のパスに手動コピー。
Windows10 x64 環境での動作は確認。
ドイツ人とがっつり遊んだ!
登録:
投稿
(
Atom
)


