string specifiedSymbol = "MySymbol";
Systems.Data.DataTable table = CreateInitialTable();
if (!table.Columns.Contains(specifiedSymbol))
table.Columns.Add(specifiedSymbol, Type.GetType("System.Double"));我刚刚分析了上面的语句,看起来IF大约需要10毫秒。这对我的应用程序来说是一段很长的时间。我还能如何更有效地检查列是否存在于datatable中?
发布于 2018-07-16 21:32:12
您使用的是什么类或导入并不明显,因此我将提供一个通用的答案。
当在复杂度为O(n) (或更糟)的集合上调用Contains()时,可以通过执行以下操作之一来提高性能:
HashSet,您可以在其中镜像对O(n)集合所做的任何更改,然后使用HashSet的Contains()-method测试是否存在。HashSet并在每次需要调用Contains() E110时用集合的内容填充它来提高性能。也就是说,没有间歇性的更改操作,使用集合的实现所耗费的时间比完全从其内容创建新的HashSet所花费的时间更长。出于性能方面的原因,这不如前者可取,但对于code-manageability.更可取
最好的情况是能够编写一个继承自集合类的新类,并将所有逻辑放入其中。
https://stackoverflow.com/questions/51362806
复制相似问题