|
Класс для поиска десятичных данных по нескольким полям
|
|||
---|---|---|---|
#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 |
|
Класс для поиска десятичных данных по нескольким полям
|
|||
---|---|---|---|
#18+
breee3, и я на Вашем месте сразу бы мобильное приложение стал писать. Изготовление алкогольных напитков наверняка не рядом с ПК происходит :) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2015, 09:56 |
|
Класс для поиска десятичных данных по нескольким полям
|
|||
---|---|---|---|
#18+
breee3 2 Gluck_13 это уже интереснее! вот только не понял как бинарный поиск должен работать... можно "на кошечках"? А в Гугле забанили? Если на кошечках, то идешь в середину отсортированного массива и сравниваешь значение с искомым. В зависимости от результата сравнения дальнейший поиск осуществляешь в первой или второй половине списка, идешь в середину этой половины и т.д., пока делить пополам не станет нечего. В случае с 10000 найдешь примерно за 14 итераций (Log2(10000)) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2015, 10:02 |
|
Класс для поиска десятичных данных по нескольким полям
|
|||
---|---|---|---|
#18+
2 skyANA а мобильное на чем писать советуешь? совет хороший, но я всё-таки переживаю, что вычислений много у меня будет, так что сначала на десктоп.. 2 Gluck_13 как льва в пустыне ловить, я знал, а как к себе применить не сообразил. Спасибо за разъяснения! ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2015, 10:14 |
|
Класс для поиска десятичных данных по нескольким полям
|
|||
---|---|---|---|
#18+
2 skyANA пардон, привык на форумах на "ты" ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2015, 10:24 |
|
Класс для поиска десятичных данных по нескольким полям
|
|||
---|---|---|---|
#18+
Gluck_13Производим обыкновенный бинарный поиск по индексному массиву, если не нашли строгое соответствие, то проверяем найденное и окрестные значения на минимальное отклонение от искомого. Можно исходный массив сразу отсортировать по одному из полей, тогда индексных понадобится на один меньше. На 10 000 записей Linq для DataSet asParralel без всяких индексных файлов быстро отработает ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2015, 10:37 |
|
Класс для поиска десятичных данных по нескольким полям
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2015, 11:56 |
|
Класс для поиска десятичных данных по нескольким полям
|
|||
---|---|---|---|
#18+
ЕвгенийВskyANA Многомерные массивы (Руководство по программированию на C#) Массивы массивов. Это к чему? :) Какбэ и по моей ссылке есть переход к массивам массивов. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2015, 12:00 |
|
Класс для поиска десятичных данных по нескольким полям
|
|||
---|---|---|---|
#18+
breee3 2 skyANA а мобильное на чем писать советуешь? совет хороший, но я всё-таки переживаю, что вычислений много у меня будет, так что сначала на десктоп..Apache Cordova, данные в SQLite... Много вычислений - это сколько и каких? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2015, 13:01 |
|
Класс для поиска десятичных данных по нескольким полям
|
|||
---|---|---|---|
#18+
2 skyANA Я еще всю теорию не уяснил, поэтому еще точно не скажу. Но один самых сложных расчетов должен будет считать с шагом времени не более секунды многочасовой процесс. На каждом шаге выполняя ..цать расчетов для десятков ступеней, и в каждом расчете несколько раз обращаться к этой таблице. То есть навскидку если ничего не забыл 10*3600*20*50=36*10^6 обращений к таблице ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2015, 15:11 |
|
Класс для поиска десятичных данных по нескольким полям
|
|||
---|---|---|---|
#18+
диф. ур-я численно решать собрались? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2015, 15:14 |
|
Класс для поиска десятичных данных по нескольким полям
|
|||
---|---|---|---|
#18+
2 kmaw не уверен, что до конца понял вопрос. Да численно. Диф.уравнения - наверно, нет ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2015, 15:30 |
|
Класс для поиска десятичных данных по нескольким полям
|
|||
---|---|---|---|
#18+
breee3 2 skyANA Я еще всю теорию не уяснил, поэтому еще точно не скажу. Но один самых сложных расчетов должен будет считать с шагом времени не более секунды многочасовой процесс. На каждом шаге выполняя ..цать расчетов для десятков ступеней, и в каждом расчете несколько раз обращаться к этой таблице. То есть навскидку если ничего не забыл 10*3600*20*50=36*10^6 обращений к таблицеИМХО Вы перемудрили. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2015, 18:14 |
|
|
start [/forum/topic.php?all=1&fid=20&tid=1401211]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
98ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
71ms |
get tp. blocked users: |
2ms |
others: | 12ms |
total: | 224ms |
0 / 0 |