Skip to content

Instantly share code, notes, and snippets.

@amp-3
amp-3 / DebugTypeOutput
Last active December 17, 2021 14:10
基底クラスに実装されたGetType()を派生クラスのインスタンスで呼び出された場合の挙動
using UnityEngine;
public class DebugTypeOutput : MonoBehaviour
{
void Start()
{
Debug.Log(new ClassChild().GetTypeStr()); //出力結果:ClassChild
}
}
public class ClassParent
@amp-3
amp-3 / StringBuilder_ZString.md
Last active December 17, 2021 14:09
C# StringBuilder, ZString比較メモ

StringBuilderとZStringの比較

※全体的にEditorProfilerの比較検証。リリース版だと異なる結果の可能性あり

  • Append性能
    • sb.Clear() * 1回, Append() * 1~2回の関数を繰り返し処理する場合はZStringのほうが約1.6倍遅い
  • GC性能
    • ToString()のGCは同一
    • TextMeshPro.SetText(zsb), TextMeshPro.SetText(sb.ToString())のGCは同一
  • 結論
    • Append、ToString()のシーンではZStringがStringBuilderより優れている点が見つからなかった
  • おまけでTextMeshProのGC
@amp-3
amp-3 / ReadonlyStructTest.cs
Created August 18, 2020 06:37
Readonly Struct Field Getter or readonly
public class C {
//結論:readonly句のほうがコスト安
//https://sharplab.io/#v2:C4LglgNgNAJiDUAfAAgZgATIEzoMLoG8BYAKHXMwwCcBTAQxgHsA7CAT3QGdgqBXAY2DoAKjW4BlHgOABGUhULyFFNCLHBJfQTIAUYZkLDAaAWwCSzGDQAeASiXLFZR8uAALMJwB0R0xavW6AC86L7mljYA3A7KAL6kMQqqtAws7KEGocbhAdHO5PEksUA==
//54 line
public readonly struct TestStruct1
{
public TestStruct(int itemIndex)
{
this.itemIndex = itemIndex;
@amp-3
amp-3 / DebugAwaitIObservable.cs
Last active October 24, 2021 21:09
IObservableをawaitしたときの挙動と、UniTaskのGCコスト
using System;
using System.Collections;
using System.Collections.Generic;
using UniRx;
//using UniRx.Async; //UniTask v1.x
using Cysharp.Threading.Tasks; //UniTask v2.x
using UnityEngine;
using UnityEngine.Profiling;
public class DebugAwaitIObservable : MonoBehaviour
@amp-3
amp-3 / DebugMessagePackBenchmarkTest.cs
Last active November 22, 2019 06:17
MessagePackBenchmark
public class DebugMessagePackBenchmarkTest : MonoBehaviour
{
// Start is called before the first frame update
void Update()
{
if (Input.GetKeyDown(KeyCode.Space)) RunBenchmark();
}
public void RunBenchmark()