我有两个接口.ICacheHolder将由实现游戏对象和IVisualizer逻辑的类实现,该类将成为可视化表示.
public interface ICacheHolder
{
void updateCacheWithCurrentState(int chachFrame);
void resizeCache(int newSize);
T getCacheFrame<T>(int cacheIndex, float interpolationToNext) where T : struct;
}
public interface IVisualizer
{
void updateVisualization(ICacheHolder cacheHolder, int cacheIndex, float interpolation);
}
Run Code Online (Sandbox Code Playgroud)
每个ICacheHolder都连接到一个IVisualizer对象,关系是1比1.我试图确定它是否更好(性能/内存方面)将它们存储在两个单独的列表中或作为结构存储在一个List中.会有很大的不同吗?如果我使用struct版本会发生拳击吗?我重新调整列表的大小将从100到1000.
版本1:
public class CacheFramework
{
private List<ICacheHolder> cacheHolders = new List<ICacheHolder>();
private List<IVisualizer> visualizers = new List<IVisualizer>();
...
}
Run Code Online (Sandbox Code Playgroud)
版本2:
struct SimulationObject
{
public ICacheHolder CacheHolder;
public IVisualizer Visualizer;
}
public class CacheFramework
{
private List<SimulationObject> cacheHolder = new List<SimulationObject>();
...
}
Run Code Online (Sandbox Code Playgroud)
添加和删除等操作不会经常进行.只有在游戏开始时才会有很多添加电话.
版本1:
private bool …Run Code Online (Sandbox Code Playgroud) c# ×1