タグ

C#とコードに関するedo_m18のブックマーク (4)

  • Unity 特有のパフォーマンス劣化の落とし穴 2018年歳末まとめ - part 2 - @hadashiA

    今年遭遇した、気づかないうちに嵌ってしまったUnityのパフォーマンス上の落とし穴を振り返っています。 part 2 です。 part 1 はこちら 今回は主に、Unity 独自の c# 実行環境である IL2CPP と、 Unityエンジン部分の c# の API についての経験談を書いてみました。 4. IL2CPPの吐くコードサイズの爆発 IL2CPPとはなんぞや IL2CPP コードサイズ肥大化によって起こる問題 ビルドが通らない .NET 3.5 → .NET 4.6 でさらにコードサイズが爆発 メモリ使用量と実行速度 対策1. ジェネリック型の 型パラメータには int か enum を使う UniRx.Unit.Default Dictionary<TKey, TValue> 対策2. seald 修飾子 5. 無害に見える UnityAPIが実はアロケートを発生させてる件

    Unity 特有のパフォーマンス劣化の落とし穴 2018年歳末まとめ - part 2 - @hadashiA
  • Sharplab のMemoryGraph を使ってメモリの状態を確認する - tech.guitarrapc.cóm

    以前 TryRoslyn と言われてたサービスですが、今は Sharplab という名になっています。 このサービスを使うと、コードがILやネイティブコードにどのようにコンパイルされるか確認したり、実行したりオブジェクトのメモリ状態を確認できます。 例えば次の図は、構造体の文字列がどのようなメモリ状態なのかを示したものです。 Sharplab を使って、コードだけでなくメモリ状態を可視化することで理解を深めるきっかけにできるか見てみましょう。 目次 目次 TL;DR; Sharplabの基 いつ使うのか コードの共有 言語選択 表示の切り替え(Decompile) 言語ごとのデコンパイル結果の比較 Other Run C# のメモリ状態を確認する Boxing を可視化する 構造体における文字列の参照状態を確認する クラスにおける参照状態を確認する TL;DR; Shaplab を使って

    Sharplab のMemoryGraph を使ってメモリの状態を確認する - tech.guitarrapc.cóm
  • Unityでマルチスレッド(後半)

    Unity3Dの公式マニュアル翻訳やってる人がiPhone, Androidでのゲームアプリ開発について記事にしています。Unity3Dでの開発をメインにAsset Storeで入手できるNGUI, Playmakerや, Oculus Riftなど作者サイトからの英語情報を翻訳していきます http://unitygems.com/threads/ November 2, 2012 デッドロックにハマらない 結局、変数が同時修正される問題の解決策は、一つの変数に対して一度に一つのスレッドしかアクセス出来ないようにすることだ。当然、複数のスレッドが同時に作業出来なくなることをも意味し、矛盾が生じるため、この制御を行なう時間は制限する必要がある。 C# には、特定のオブジェクトに対して特定の時間帯に、一つのスレッドしか存在し得ないようにする lock キーワードが用意されている。なお、値型や

  • UnityのGCはどんな実装になっているのか

    こんにちは。Aiming エンジニアの久保田です。 僕の携わっているプロジェクトでは、近頃、Unity製クライアントのパフォーマンスの調査や改善を行っている最中です。 プロファイラを眺めていると、僕達が書くアプリケーションレイヤのコードが目立って遅い、ということは珍しいのですが、代わりにC#世界のスパイクとしてよく顔を出すのが、GC実行時間です。 C#は、タイプセーフでありながら人間にやさしく、getter/setter、async/await、Rx、ロケットなラムダ式、他他他…最新型の言語への影響も多大な、ファッション的にも◎な言語です。しかし、闇雲に全ての機能をタダで……というわけにはいかず、ことパフォーマンス面においては、GCというなかなか高い代償を支払うことになりかねないわけですね。 結論としては、UnityのGCは、皆が期待していたほど高性能ではなく、現状では僕達が書くC#が発生

    UnityのGCはどんな実装になっているのか
    edo_m18
    edo_m18 2017/04/21
    とてもいい記事!
  • 1