string specifiedSymbol = "MySymbol";
Systems.Data.DataTable table = CreateInitialTable();
if (!table.Columns.Contains(specifiedSymbol))
table.Columns.Add(specifiedSymbol, Type.GetType("System.Double"));
我刚刚描述了上面的陈述,看来中频大约需要10毫秒。这对我的应用来说是很长的时间。我还能如何更有效地检查数据表中是否存在列?
答案 0 :(得分:0)
您使用的是什么类或导入尚不清楚,所以我将提供一个通用答案。
在具有O(n)复杂度(或更糟)的集合上调用Contains()
时,可以通过执行以下操作之一来提高性能:
HashSet
,在其中镜像对O(n)集合所做的任何更改,然后使用Contains()
的{{1}}方法测试是否存在。HashSet
并在每次需要调用HashSet
时用集合的内容填充它来提高性能。 strong> iff ,您需要连续多次调用它,即没有间歇性的更改操作,并且使用集合的实现所浪费的时间要比完全根据其内容创建新的Contains()
花费的时间更长。出于性能方面的考虑,这比前者更不可取,但是对于代码可管理性而言,则更可取。最好的情况是能够编写一个从集合的类继承的新类,并将所有逻辑放在其中。