如何阻止拆箱装箱存储器开销时,阅读任意sql行
题
我正在写一级代表的行SQL query.我想现场数据可以通过访问索引的财产的类。这很简单如果我将数据加载到内部名单的对象。我已经尝试了这个,我不喜欢拳击的元。拳击增加的存储需求的20%。我想存储的元作为原语的课。数据表类存储元的通过创建阵列中每一列架构返回自通过.我实现了一个类这种方式但我希望将数据存储的行对象,而不是在一个柱,是所引用的内部通行。
任何想法完成这个吗?
解决方案
你可以产生结构类型来代表一个行。它可以做到的动态,这是可能做到这一点,所以不会有任何拳击。我不知道它是值得的努力虽然
其他提示
只有20%的开销?你真幸运!我只是清理了一些代码,它增加了四十倍的性能下降(不计算额外的内存的影响)!总之,要防止使用object
的典型方式是通过启动使用泛型。下面是一个简化的示例:
class RowRepresenter<T>
{
//....
public T this[int index] {get; set;} // implementation left out
}
// initialize, suppose the properties (indexers) should be ints:
RowRepresenter<int> myInstance = new RowRepresenter<int>();
myInstance.LoadData();
// get data (i.e., your indexer)
int somefield = myInstance[2]; // no overhead, no casting required
不隶属于 StackOverflow