私も良くやるので、もっとも有効な調査方法をさらっと書いておきます。
続きを読む【解決済】引数渡しなし&マルチスレッドで、呼び出し元とオブジェクトを共有するいい方法
2017.02.19 追記:
本件は、以下のアドバイスで解決することができます。
@nuits_jp ThreadLocal でダメなら AsyncLocal でどうじゃ? と思った
— あえとす 2017-beta.2 (@aetos382) 2017年2月18日
AsyncLocalなんて追加されていたんですね。全く知りませんでした!
過去形じゃないのは、PrismのUnitTestプロジェクトがPCLでAsyncLocalが使えず、結局Prism依存の解決策を思いついたため、そちらを利用したためです。
直接の修正箇所は以下ですが、ちょっと分かりにくいですね。。。
https://github.com/PrismLibrary/Prism/pull/942/commits/d086e5db57685967591b0932108f5604eba5200d#diff-ee845c5f0d8ae25841a5335f0ca7b5a6
本件は、多くの方にアドバイス頂きました。
解決したこと以上に、その事が嬉しかったです。
みなさん、ありがとうございました!
追記終了
Prismの機能実装&不具合対応してるのですが、どうもイマイチうまくテストが書けないところがあって、私のC#力では限界に達しました。(まだ考えてはいるけど無理くさい。。。)
そんな訳で、どなたか良いアイディアがあったら支援欲しいなと思ってエントリー書いています。
端的に助けてほしいことを書くと
「該当のテストというコンテキスト内だけで、スレッド関係なく情報を共有する方法」
って無いかな?ってことです。
誰か僕とPrismを助けて〜!
Prismで、いつの間にかAutowireViewModelが不要になってた話
色々いじってて、おかしいおかしいと思ったらPrism for Xamarin.Forms 6.2.0のリリースノートの記述にこんな内容が
ViewModelLocator.AuowireViewModel is now done automatically. This is now an opt-out feature
https://github.com/PrismLibrary/Prism/wiki/Release-Notes-6.2.0
6.1.0までは、ViewModelをViewにバインドするのに、PageへAttachedPropertyとしてViewModelLocator.AutowireViewModel=“true"を設定してあげる必要があったのですが、現在はViewModelLocator.AutowireViewModel="false"を設定した時だけ、自動バインドされない仕様になっているようです。
知らんかったよ。てかItemsTemplate直した方がいいんじゃないのこれ。
ちゃんとリリースノートは読みましょうって事ですが今更びっくりした話でした。
今回はこれだけ。
それではまた!
Xamarin.FormsのPage遷移の詳細に迫る
なんかちょっと久しぶりに書いている気がします。
みなさん、いかがお過ごしでしょうか。私は諸々忙しくて辛いです。
今回はXamarin.Formsの画面遷移、正確には画面遷移スタックについて掘り下げてみたいと思います。
ここまで理解しておく必要があるケースというのは少ないでしょうけど、アプリケーションを設計する立場、アーキテクトであるという認識がある人は理解しておいてほしいなと思います。
なお、私はつい最近正しく理解しました。ハハハ。
さて、以下にXamarin.Formsの画面遷移スタックについての全てを図示しました。
鋭い人はこれで理解出来ちゃったかもしれませんが、まぁそう言わず最後まで付き合って頂けると幸いです。
続きを読むIoC コンテナ パフォーマンスバトル on Xamarin in 2017
少し前に、PC上でのIoCコンテナのパフォーマンス調査を行いました。
今回はXamarin上で調査しましたので、その情報を共有したいと思います。
それでまずは結果から見てみましょう。
まずはUnityの性能を100%としたときの評価グラフです。
具体的な数値は以下のとおりです。
Container | Singleton - Registartion | Singleton - Resolve | Transient - Registartion | Transient - Resolve |
---|---|---|---|---|
DryIoc | 75% | 1169% | 385% | 2255% |
SimpleInjector | 69% | 527% | 7% | 2231% |
AutoFac | 64% | 104% | 19% | 184% |
AutoFac Lambda | 96% | 110% | 5% | 1236% |
Unity | 100% | 100% | 100% | 100% |
SimpleInjectorは相変わらず早いですが、DryIocが素晴らしい速度を出していますね。
というわけで、詳細なデータを掘り下げてみて行ってみましょう。
Prism for Xamarin.Forms 6.3.0アップデートの注意事項
ちょっとTLで話題になっていたのでせっかくだから文章でまとめようかと思いエントリーにしてみました。
- 6.3.0の正式版リリース時にも注意が必要な事項
- 6.3.0-pre独自の注意事項(リリースまでにはおそらく改修されるだろう内容)
についてまとめてみましたので、よろしかったらご覧ください。
なお現在の6.3.0-pre1でリリースされている機能については以下をご覧ください。
VMwareのHDDのベンチマークを取ってみた
前々から気になっていたのでVMwareの仮想HDDについてパフォーマンスを測定してみました。
ただ、手軽にベンチマークを取得するため、CrystalDiskMarkを利用しました。
このソフトウェアは、手軽にベンチが取得できる反面、正確性はあまり高くないという話もありますので、参考程度にご覧ください。