Недавно мне пришлось обработать тяжелые вещи с данными, хранящимися в DataSet. Это было достаточно тяжело, и я в конечном итоге использовал инструмент, помогающий выявить некоторые узкие места в моем коде. Когда я анализировал узкие места, я заметил, что хотя поиск DataSet не был ужасно медленным (они не были узким местом), это было медленнее, чем я ожидал. Я всегда предполагал, что DataSets использовал какую-то реализацию стиля HashTable, которая создавала бы поиск O (1) (или, по крайней мере, то, что я считаю HashTables). Скорость моих поисков выглядела значительно медленнее, чем эта.Скорость поиска строк/столбцов DataSet?
Мне было интересно узнать, знает ли кто-нибудь, кто что-нибудь знает о внедрении класса DataSet .NET, поделиться тем, что они знают.
Если я что-то вроде этого:
DataTable dt = new DataTable();
if(dt.Columns.Contains("SomeColumn"))
{
object o = dt.Rows[0]["SomeColumn"];
}
Как быстро будет время поиска будет для метода Contains(...)
, и для получения значения для хранения в Object o
? Я бы подумал, что это очень быстро, как HashTable (предполагая, что я понимаю, что HashTables верен), но это не похоже на это ...
Я написал этот код из памяти, поэтому некоторые вещи могут быть не синтаксически верный".
Это будет O (n^2), поскольку вы выполняете сравнение строк по каждому элементу. – 2008-09-28 01:05:37