|
Класс для поиска десятичных данных по нескольким полям
|
|||
---|---|---|---|
#18+
У меня есть таблица. Это справочник соответствия некоторых величин при физическом процессе. Всего пять полей с типом Decimal и десять тысяч строк. Какой класс .net лучше использовать для хранения такой таблицы?. Интересен поиск строки по каждому из полей. Если было два поля, то вариантов масса: Dictionary, Hashtable и др. Для установления соответствия между пятью полями понадобилось бы 10 экземпляров вышеупомянутых классов, это если в Value будет просто значение другого поля. Ну или хотя бы пять, если в Value будет храниться строка (кортеж?) из остальных полей. Другая проблема, что значения по которому я буду искать может не оказаться в таблице. Например, я ищу 36.8, а в таблице есть только 36.6 и 40.0. В таком случае, мне нужно получить строку с ближайшим значением в любую сторону. В моём текущем случае мне не нужно интерполировать значение -- таблица и так очень точная, а если бы пришлось то нужна бы была не одна строка, а несколько в обе стороны. Я конечно, могу велосипед придумать на базе пяти Dictionary (или даже одного DataTable) и циклов для изменения значения поиска при неудачи... Но боюсь он будет ездить медленно. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2015, 04:53 |
|
Класс для поиска десятичных данных по нескольким полям
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2015, 07:42 |
|
Класс для поиска десятичных данных по нескольким полям
|
|||
---|---|---|---|
#18+
А вообще если "Интересен поиск строки по каждому из полей", то чем поиск по самой таблице не устравивает? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2015, 07:48 |
|
Класс для поиска десятичных данных по нескольким полям
|
|||
---|---|---|---|
#18+
2 skyANA Вы считаете, что лучше использовать именно двумерные массивы, а не допустим массивы массивов? А они оптимизированы для поиска по десятичным значениям? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2015, 07:48 |
|
Класс для поиска десятичных данных по нескольким полям
|
|||
---|---|---|---|
#18+
по самой таблице DataTable ? Я переживаю за скорость, она подойдёт? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2015, 07:49 |
|
Класс для поиска десятичных данных по нескольким полям
|
|||
---|---|---|---|
#18+
И собственно ещё сильней напрягает реализация поиска по неточному значению( по тому, которого нет в таблице) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2015, 07:51 |
|
Класс для поиска десятичных данных по нескольким полям
|
|||
---|---|---|---|
#18+
breee3по самой таблице DataTable ? Я переживаю за скорость, она подойдёт?Вы написали: "У меня есть таблица". Где она есть? Почему прямо по ней не ищете? Запросом. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2015, 07:52 |
|
Класс для поиска десятичных данных по нескольким полям
|
|||
---|---|---|---|
#18+
ну пока она есть в текстовом файле. планирую вообще её в код запихать. С БД не охото завязываться ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2015, 07:53 |
|
Класс для поиска десятичных данных по нескольким полям
|
|||
---|---|---|---|
#18+
breee3С БД не охото завязываться тогда только хардкор ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2015, 07:55 |
|
Класс для поиска десятичных данных по нескольким полям
|
|||
---|---|---|---|
#18+
breee3, а что за данные, некий временной ряд? Почему не хотите завязываться к примеру с Column store, или TimeSeries store? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2015, 07:56 |
|
Класс для поиска десятичных данных по нескольким полям
|
|||
---|---|---|---|
#18+
breee3 2 skyANA Вы считаете, что лучше использовать именно двумерные массивы, а не допустим массивы массивов?У Вас фиксированное количество полей в строке. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2015, 07:58 |
|
Класс для поиска десятичных данных по нескольким полям
|
|||
---|---|---|---|
#18+
skyANAColumn store, или TimeSeries store? пошёл гуглить... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2015, 07:59 |
|
Класс для поиска десятичных данных по нескольким полям
|
|||
---|---|---|---|
#18+
breee3skyANAColumn store, или TimeSeries store? пошёл гуглить...:) Погуглите заодно matlab и язык R. Лично у меня возник вопрос: а зачем тут вообще .net? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2015, 08:01 |
|
Класс для поиска десятичных данных по нескольким полям
|
|||
---|---|---|---|
#18+
з.ы. вообще я думал, что 10000 строк, не тот объем чтоб средств языка не хватило... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2015, 08:01 |
|
Класс для поиска десятичных данных по нескольким полям
|
|||
---|---|---|---|
#18+
зачем тут вообще .net? ну морды последнее время на нём пишу, вот и решил на нём... вообще хочу написать приложение для своего хобби и делиться с коллегами по увлечению. А вот осваивать новые для себя языки (R и т.д.)... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2015, 08:05 |
|
Класс для поиска десятичных данных по нескольким полям
|
|||
---|---|---|---|
#18+
breee3з.ы. вообще я думал, что 10000 строк, не тот объем чтоб средств языка не хватило...10000 строк - это не тот объём, когда сразу нужно думать об оптимизированном поиске. Вот сколько у Вас простой перебор по многомерному массиву занимает? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2015, 08:37 |
|
Класс для поиска десятичных данных по нескольким полям
|
|||
---|---|---|---|
#18+
breee3зачем тут вообще .net? ну морды последнее время на нём пишу, вот и решил на нём... вообще хочу написать приложение для своего хобби и делиться с коллегами по увлечению. А вот осваивать новые для себя языки (R и т.д.)...Морду для чего Вы хотите написать? Что за хобби? Анализ временных рядов? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2015, 08:38 |
|
Класс для поиска десятичных данных по нескольким полям
|
|||
---|---|---|---|
#18+
skyANA[10000 строк - это не тот объём, когда сразу нужно думать об оптимизированном поиске. А вот это может быть веско! Но ведь данные тоже в циклах будут дёргаться... Хобби - изготовления алкогольных напитков в домашних условиях. Программа - возможность выполнять разные нетривиальные расчеты. Таблица - соответствие концентраций (объёмных, массовых, молярных) этанола в кипящей жидкости и дистилляте и температуры кипения. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2015, 08:47 |
|
Класс для поиска десятичных данных по нескольким полям
|
|||
---|---|---|---|
#18+
breee3skyANA[10000 строк - это не тот объём, когда сразу нужно думать об оптимизированном поиске. А вот это может быть веско! Но ведь данные тоже в циклах будут дёргаться...Вы таки для начала замерьте свои циклы, прежде чем переживать :) breee3Хобби - изготовления алкогольных напитков в домашних условиях. Программа - возможность выполнять разные нетривиальные расчеты. Таблица - соответствие концентраций (объёмных, массовых, молярных) этанола в кипящей жидкости и дистилляте и температуры кипения.Для одного напитка 10000 строк? P.S.: классы, заточенные именно под Ваши "нетривиальные расчеты" вряд-ли существуют. Возьмите многомерный массив, да напишите вокруг него всё. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2015, 09:09 |
|
Класс для поиска десятичных данных по нескольким полям
|
|||
---|---|---|---|
#18+
P.P.S.: нетривиальные не значит сложные. Так что не стоит бояться. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2015, 09:12 |
|
Класс для поиска десятичных данных по нескольким полям
|
|||
---|---|---|---|
#18+
skyANA напишите вокруг него всё. это само собой :) попробую вообщем на DataTable всё таки, там можно какие-то условия накладывать. А уж если, что потом буду оптимизировать. Вы меня успокоили, спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2015, 09:22 |
|
Класс для поиска десятичных данных по нескольким полям
|
|||
---|---|---|---|
#18+
Если не предполагается внесение изменений в таблицу в процессе работы (статический справочник), то я бы представил строку справочника в виде struct, сложил бы в его в массив, и построил бы 5 индексных массивов для поиска, каждый из которых представляет собой список индексов основного массива, отсортированных по возрастанию того или иного поля. Производим обыкновенный бинарный поиск по индексному массиву, если не нашли строгое соответствие, то проверяем найденное и окрестные значения на минимальное отклонение от искомого. Можно исходный массив сразу отсортировать по одному из полей, тогда индексных понадобится на один меньше. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2015, 09:29 |
|
Класс для поиска десятичных данных по нескольким полям
|
|||
---|---|---|---|
#18+
2 Gluck_13 это уже интереснее! вот только не понял как бинарный поиск должен работать... можно "на кошечках"? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2015, 09:36 |
|
Класс для поиска десятичных данных по нескольким полям
|
|||
---|---|---|---|
#18+
breee3, в .net уже реализован бинарный поиск по отсортированному массиву: Array.BinarySearch<T> . ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2015, 09:41 |
|
Класс для поиска десятичных данных по нескольким полям
|
|||
---|---|---|---|
#18+
А вообще можно было уже консольное приложение накидать, где сгенирировать 5 колонок по 10000 значений в каждой, или 10000 строк по 5 значений. И убедиться в том, что рано думать о быстрых сортировках, индексах и бинарном поиске :) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2015, 09:46 |
|
|
start [/forum/topic.php?fid=20&msg=39051389&tid=1401211]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
95ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 211ms |
0 / 0 |