C#+WPFチューニング戦記

C#とWPFで高速なコードと最適なシステムを書くためにやってきたいろいろな事を書いてみます。.NET Frameworkのソースコードを読み解きましょう。なお、ここに書かれているのは個人の見解であって何らかの団体や企業の見解を代表するものではありません。

C#

IEnumerableを扱う諸々について

IEnumerable<TSource> を返すメソッドだからといって、こんなことをしていると凄い遅いコードが出力されます。 yield return new TSource(); yield return new TSource(); yield return new TSource(); プログラムの大半はループで構成されているのですから、ループが</tsource>…

Canvas.LeftやCanvas.Topの動作について

パネルのうちで極めて自由度が高いといえばCanvasですが、使い込めば使い込むほど中身のことをしっかりと理解しておく必要を感じるはずです。 http://referencesource.microsoft.com/#PresentationFramework/src/Framework/System/Windows/Controls/Canvas.c…

callとcallvirtの違いとstructとinterfaceの関係

List<T>の話は具体的なILの話に続いていきます。 ILに変換された後にcallであるかcallvirtであるか、という違いは案外大きいようです。 callである場合、現時点の .NET Frameworkは比較的積極的な最適化を行ってくれます。一方callvirtになる場合の最適化は消極</t>…

List<T>の話

困ったことにList<T>を最近使いたくありません。 List<T>の場合.NET Framework 4.5 時点でいまだに for と foreach では、 forが高速に組めます。 コンパイラやJITの最適化が進化すれば同じ速度になるかと思いきや、いつまで経っても foreachの方が遅いのです。 あ</t></t>…