Какой вид индексирования быстрее?
Какой вид индексирования быстрее?
Собственно - при доступе к данным в DataRow
можно индексировать порядковым номером, именем поля и колонкой данных.
Какой из них работает быстрее?
можно индексировать порядковым номером, именем поля и колонкой данных.
Как это индех по колонке данных? А остальное по числовому полю или по строковому?
Еще бы дописал что для Оракла.
Ничего подобного пока не попадалось
https://stackoverflow.com/questions/212264/how-to-choose-a...
Было бы нужно для Оракла - Я бы написал что надо для Оракла.
Интересует для обычного DataRow.
Можно, конечно, протестировать или выкопать из соурсов, но может кто уже озабачивался...
Примерно так:
int column1 = 1;
DataColumn dc = table.Columns[column1];
String columnName = dc.ColumnName;
DataRow dr = dt.NewRow();
var a = dr[1];
var b = dr[dc];
var c = dr[columnName];
Вопрос - какой из индексеров шустрее?
Когда-то давно вроде самым шустрым был цифровой,
но билли пользует dc.
Вот Я и застрял с вопросом...
зачем проверять очевидные вещи?
public object this[int columnIndex] { get { DataColumn column = _columns[columnIndex]; int record = GetDefaultRecord(); _table.recordManager.VerifyRecord(record, this); VerifyValueFromStorage(column, DataRowVersion.Default, column[record]); return column[record]; } } public object this[DataColumn column] { get { CheckColumn(column); int record = GetDefaultRecord(); _table.recordManager.VerifyRecord(record, this); VerifyValueFromStorage(column, DataRowVersion.Default, column[record]); return column[record]; } private void CheckColumn(DataColumn column) { if (column == null) { throw ExceptionBuilder.ArgumentNull("column"); } if (column.Table != _table) { throw ExceptionBuilder.ColumnNotInTheTable(column.ColumnName, _table.TableName); } }
Все же решил написать тест:
Table contain 8 fields
Generating data...
Data generated: 10000 rows in 54 miliseconds
Testing int indexer
Testing string indexer
Testing DataColumn indexer
int indexing
total: 33815.2 ms
each: 338.152ms
string indexing
total: 57607.1559 ms
each: 576.071559ms
DataColumn indexing
total: 17460.3316 ms
each: 174.603316ms
Так что придется мне слегка переделать кучку кода: 576 вс 174 - существенно...
В свете результатов теста возникает интересный вопросик:
- можно ли заменить DataColumnCollection Columns in DataTable другой, типизированной, коллекцией?
С наскоку у меня не получилось. Т.е. написать нужную коллекцию проблемы нет, а вот встроить ее в DataTable
пока не вышло...
Просто не хочется иметь каждый колумн в виде отдельного поля в коде таблицы.