假设我有基于内存的数据表,如下所示:
DataTable dt = new DataTable();
dt.Columns.Add("c1", System.Type.GetType("System.Double"));
dt.Columns.Add("c2", System.Type.GetType("System.Double"));
...
DataRow row = dt.AddRow();
row["c1"] = 1;
row["c2"] = 2;
...
Run Code Online (Sandbox Code Playgroud)
然后我查询这个表:
List<DataRow> rows = (from r in table where (double)r["c1"] < 2.0 select r).ToList();
Run Code Online (Sandbox Code Playgroud)
在剖析器中,我看到它创造了很多双打.我认为它与比较有某种关系.
任何想法如何摆脱这种不必要的内存分配?
我使用.NET 4,VS 2010,C#.
这里的底层存储是一个类型化的数组(在本例中是在DoubleStorage类中),但所有访问都是通过的object,因为没有通用的API.除非你没有切换到基于类的模型,否则你无法避免拳击DataTable.
| 归档时间: |
|
| 查看次数: |
680 次 |
| 最近记录: |