浏览代码

Add DictionaryPool

/main
Peter Bay Bastian 7 年前
当前提交
f32d2e24
共有 4 个文件被更改,包括 35 次插入3 次删除
  1. 2
      MaterialGraphProject/Assets/GraphFramework/SerializableGraph/Runtime/Util/ListPool.cs
  2. 8
      MaterialGraphProject/Assets/UnityShaderEditor/Runtime/Nodes/AbstractMaterialNode.cs
  3. 25
      MaterialGraphProject/Assets/GraphFramework/SerializableGraph/Runtime/Util/DictionaryPool.cs
  4. 3
      MaterialGraphProject/Assets/GraphFramework/SerializableGraph/Runtime/Util/DictionaryPool.cs.meta

2
MaterialGraphProject/Assets/GraphFramework/SerializableGraph/Runtime/Util/ListPool.cs


public static class ListPool<T>
{
// Object pool to avoid allocations.
private static readonly ObjectPool<List<T>> s_ListPool = new ObjectPool<List<T>>(null, l => l.Clear());
static readonly ObjectPool<List<T>> s_ListPool = new ObjectPool<List<T>>(null, l => l.Clear());
public static List<T> Get()
{

8
MaterialGraphProject/Assets/UnityShaderEditor/Runtime/Nodes/AbstractMaterialNode.cs


}
}
var dynamicInputSlotsToCompare = new Dictionary<MaterialSlot, ConcreteSlotValueType>();
var skippedDynamicSlots = new List<MaterialSlot>();
var dynamicInputSlotsToCompare = DictionaryPool<MaterialSlot, ConcreteSlotValueType>.Get();
var skippedDynamicSlots = ListPool<MaterialSlot>.Get();
// iterate the input slots
foreach (var inputSlot in GetInputSlots<MaterialSlot>())

{
++version;
}
ListPool<MaterialSlot>.Release(skippedDynamicSlots);
DictionaryPool<MaterialSlot, ConcreteSlotValueType>.Release(dynamicInputSlotsToCompare);
}
public int version { get; private set; }

25
MaterialGraphProject/Assets/GraphFramework/SerializableGraph/Runtime/Util/DictionaryPool.cs


using System.Collections.Generic;
namespace UnityEngine.Graphing
{
public static class DictionaryPool<TKey, TValue>
{
// Object pool to avoid allocations.
static readonly ObjectPool<Dictionary<TKey, TValue>> k_Pool = new ObjectPool<Dictionary<TKey, TValue>>(null, l => l.Clear());
public static Dictionary<TKey, TValue> Get()
{
return k_Pool.Get();
}
public static PooledObject<Dictionary<TKey, TValue>> GetDisposable()
{
return k_Pool.GetDisposable();
}
public static void Release(Dictionary<TKey, TValue> toRelease)
{
k_Pool.Release(toRelease);
}
}
}

3
MaterialGraphProject/Assets/GraphFramework/SerializableGraph/Runtime/Util/DictionaryPool.cs.meta


fileFormatVersion: 2
guid: 7624128bb110449387b7142499b45c91
timeCreated: 1504252645
正在加载...
取消
保存