タグ

ブックマーク / engineering.grani.jp (3)

  • C#でTypeをキーにしたDictionaryのパフォーマンス比較と最速コードの実装 - Grani Engineering Blog

    CTOの河合(@neuecc)です。今回はパフォーマンス比較もそうなのですが、どちらかというと、それを具体的な例にして、マイクロベンチマークの測り方の説明をしたいと思っています。その具体的な例、題材なのですが、特に動的コード生成においては、Typeをキーにして生成したデリゲートをキャッシュすることがよくあります。その場合に最速なのはジェネリッククラスを一つ作って、そこに貯めることで public static class Cache<T> { public static Func<T> cache; } 最速に取り出すことが出来ます。これはEqualityComparer<T>.Defaultなどでも使われている、覚えておきたいC#テクニックの一つです。とはいえ、常に必ずしもTを元にして取り出せるわけではなく、Typeをキーにした辞書を作って、そこから取り出すケースも多いでしょう。 具体的

    C#でTypeをキーにしたDictionaryのパフォーマンス比較と最速コードの実装 - Grani Engineering Blog
  • String.InternによるUnityでの省メモリ化ハック - Grani Engineering Blog

    CTOの河合(@neuecc)です。常駐メモリは一ミリでも削りたい……!と思いつつも、それなりに富豪に使ってしまっていて削るのに四苦八苦な日々ですが、削れる箇所はテクスチャなどリソース系だけではない。C#側のマネージドなリソースもまた、それなりに確保しているので、削ることは可能なのだ……!というお話です。 ものすごいメモリプロファイラ(PA_ResourceTracker)を使う まぁ、なにはともあれプロファイリングです。メモリプロファイラで見てみましょう。実際の黒騎士と白の魔王の開発ビルドに流してみると うーん、なかなか立派なString確保量。そして大量の「通常攻撃」という同一文字列。スクリーンショットからは削ってしまってますが、右側には誰が参照しているかがわかる表示もついているので、犯人はひと目で分かり、これは、マスタデータに起因するものでした。独自開発のインメモリデータベース内にオ

    String.InternによるUnityでの省メモリ化ハック - Grani Engineering Blog
    W53SA
    W53SA 2017/11/30
    “ものすごいメモリプロファイラ(PA_ResourceTracker)”
  • メモリダンプから.NETのメモリ状態を探りたい - Grani Engineering Blog

    こんにちは、@mayukiです。 以前、このブログにてダンプ解析入門 - Visual Studioでの可視化によるC#トラブルシューティングというスタックオーバーフローのような問題を調査する方法について触れましたが、今回はダンプを元にメモリ周りの状態を見ていく方法について調べたので少しまとめてみました。 長い時間実行するようなアプリケーション(アプリケーションサーバーなど)ではメモリの使用状況やメモリリークなどを調査したいというケースがたまにやってきます。そんなときにはプロセスのメモリダンプを取得して解析することで問題の原因がわかりそう…そんなシチュエーションで役立つかもしれません。 お品書き お品書き 前提 メモ: 64bit コンピューターで動作している32bit プロセスのダンプをとる ダンプのみどころ どのツールで解析すれば? Visual Studioを試してみる DebugD

    メモリダンプから.NETのメモリ状態を探りたい - Grani Engineering Blog
  • 1