powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Класс для поиска десятичных данных по нескольким полям
37 сообщений из 37, показаны все 2 страниц
Класс для поиска десятичных данных по нескольким полям
    #39051349
breee3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня есть таблица. Это справочник соответствия некоторых величин при физическом процессе. Всего пять полей с типом Decimal и десять тысяч строк. Какой класс .net лучше использовать для хранения такой таблицы?. Интересен поиск строки по каждому из полей. Если было два поля, то вариантов масса: Dictionary, Hashtable и др. Для установления соответствия между пятью полями понадобилось бы 10 экземпляров вышеупомянутых классов, это если в Value будет просто значение другого поля. Ну или хотя бы пять, если в Value будет храниться строка (кортеж?) из остальных полей.
Другая проблема, что значения по которому я буду искать может не оказаться в таблице. Например, я ищу 36.8, а в таблице есть только 36.6 и 40.0. В таком случае, мне нужно получить строку с ближайшим значением в любую сторону. В моём текущем случае мне не нужно интерполировать значение -- таблица и так очень точная, а если бы пришлось то нужна бы была не одна строка, а несколько в обе стороны.
Я конечно, могу велосипед придумать на базе пяти Dictionary (или даже одного DataTable) и циклов для изменения значения поиска при неудачи... Но боюсь он будет ездить медленно.
...
Рейтинг: 0 / 0
Класс для поиска десятичных данных по нескольким полям
    #39051380
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Класс для поиска десятичных данных по нескольким полям
    #39051381
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вообще если "Интересен поиск строки по каждому из полей", то чем поиск по самой таблице не устравивает?
...
Рейтинг: 0 / 0
Класс для поиска десятичных данных по нескольким полям
    #39051382
breee3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 skyANA
Вы считаете, что лучше использовать именно двумерные массивы, а не допустим массивы массивов? А они оптимизированы для поиска по десятичным значениям?
...
Рейтинг: 0 / 0
Класс для поиска десятичных данных по нескольким полям
    #39051384
breee3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по самой таблице DataTable ? Я переживаю за скорость, она подойдёт?
...
Рейтинг: 0 / 0
Класс для поиска десятичных данных по нескольким полям
    #39051385
breee3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И собственно ещё сильней напрягает реализация поиска по неточному значению( по тому, которого нет в таблице)
...
Рейтинг: 0 / 0
Класс для поиска десятичных данных по нескольким полям
    #39051386
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
breee3по самой таблице DataTable ? Я переживаю за скорость, она подойдёт?Вы написали: "У меня есть таблица". Где она есть? Почему прямо по ней не ищете? Запросом.
...
Рейтинг: 0 / 0
Класс для поиска десятичных данных по нескольким полям
    #39051388
breee3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну пока она есть в текстовом файле. планирую вообще её в код запихать. С БД не охото завязываться
...
Рейтинг: 0 / 0
Класс для поиска десятичных данных по нескольким полям
    #39051389
kmaw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
breee3С БД не охото завязываться

тогда только хардкор
...
Рейтинг: 0 / 0
Класс для поиска десятичных данных по нескольким полям
    #39051390
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
breee3, а что за данные, некий временной ряд? Почему не хотите завязываться к примеру с Column store, или TimeSeries store?
...
Рейтинг: 0 / 0
Класс для поиска десятичных данных по нескольким полям
    #39051392
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
breee3 2 skyANA
Вы считаете, что лучше использовать именно двумерные массивы, а не допустим массивы массивов?У Вас фиксированное количество полей в строке.
...
Рейтинг: 0 / 0
Класс для поиска десятичных данных по нескольким полям
    #39051393
breee3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAColumn store, или TimeSeries store? пошёл гуглить...
...
Рейтинг: 0 / 0
Класс для поиска десятичных данных по нескольким полям
    #39051394
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
breee3skyANAColumn store, или TimeSeries store? пошёл гуглить...:)

Погуглите заодно matlab и язык R. Лично у меня возник вопрос: а зачем тут вообще .net?
...
Рейтинг: 0 / 0
Класс для поиска десятичных данных по нескольким полям
    #39051395
breee3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
з.ы. вообще я думал, что 10000 строк, не тот объем чтоб средств языка не хватило...
...
Рейтинг: 0 / 0
Класс для поиска десятичных данных по нескольким полям
    #39051400
breee3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зачем тут вообще .net? ну морды последнее время на нём пишу, вот и решил на нём... вообще хочу написать приложение для своего хобби и делиться с коллегами по увлечению. А вот осваивать новые для себя языки (R и т.д.)...
...
Рейтинг: 0 / 0
Класс для поиска десятичных данных по нескольким полям
    #39051415
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
breee3з.ы. вообще я думал, что 10000 строк, не тот объем чтоб средств языка не хватило...10000 строк - это не тот объём, когда сразу нужно думать об оптимизированном поиске.

Вот сколько у Вас простой перебор по многомерному массиву занимает? :)
...
Рейтинг: 0 / 0
Класс для поиска десятичных данных по нескольким полям
    #39051417
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
breee3зачем тут вообще .net? ну морды последнее время на нём пишу, вот и решил на нём... вообще хочу написать приложение для своего хобби и делиться с коллегами по увлечению. А вот осваивать новые для себя языки (R и т.д.)...Морду для чего Вы хотите написать? Что за хобби? Анализ временных рядов? :)
...
Рейтинг: 0 / 0
Класс для поиска десятичных данных по нескольким полям
    #39051423
breee3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA[10000 строк - это не тот объём, когда сразу нужно думать об оптимизированном поиске. А вот это может быть веско! Но ведь данные тоже в циклах будут дёргаться...

Хобби - изготовления алкогольных напитков в домашних условиях. Программа - возможность выполнять разные нетривиальные расчеты. Таблица - соответствие концентраций (объёмных, массовых, молярных) этанола в кипящей жидкости и дистилляте и температуры кипения.
...
Рейтинг: 0 / 0
Класс для поиска десятичных данных по нескольким полям
    #39051436
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
breee3skyANA[10000 строк - это не тот объём, когда сразу нужно думать об оптимизированном поиске. А вот это может быть веско! Но ведь данные тоже в циклах будут дёргаться...Вы таки для начала замерьте свои циклы, прежде чем переживать :)

breee3Хобби - изготовления алкогольных напитков в домашних условиях. Программа - возможность выполнять разные нетривиальные расчеты. Таблица - соответствие концентраций (объёмных, массовых, молярных) этанола в кипящей жидкости и дистилляте и температуры кипения.Для одного напитка 10000 строк?

P.S.: классы, заточенные именно под Ваши "нетривиальные расчеты" вряд-ли существуют. Возьмите многомерный массив, да напишите вокруг него всё.
...
Рейтинг: 0 / 0
Класс для поиска десятичных данных по нескольким полям
    #39051437
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
P.P.S.: нетривиальные не значит сложные. Так что не стоит бояться.
...
Рейтинг: 0 / 0
Класс для поиска десятичных данных по нескольким полям
    #39051446
breee3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA напишите вокруг него всё. это само собой :) попробую вообщем на DataTable всё таки, там можно какие-то условия накладывать. А уж если, что потом буду оптимизировать. Вы меня успокоили, спасибо!
...
Рейтинг: 0 / 0
Класс для поиска десятичных данных по нескольким полям
    #39051456
Gluck_13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если не предполагается внесение изменений в таблицу в процессе работы (статический справочник), то я бы представил строку справочника в виде struct, сложил бы в его в массив, и построил бы 5 индексных массивов для поиска, каждый из которых представляет собой список индексов основного массива, отсортированных по возрастанию того или иного поля.
Производим обыкновенный бинарный поиск по индексному массиву, если не нашли строгое соответствие, то проверяем найденное и окрестные значения на минимальное отклонение от искомого.
Можно исходный массив сразу отсортировать по одному из полей, тогда индексных понадобится на один меньше.
...
Рейтинг: 0 / 0
Класс для поиска десятичных данных по нескольким полям
    #39051468
breee3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Gluck_13 это уже интереснее! вот только не понял как бинарный поиск должен работать... можно "на кошечках"?
...
Рейтинг: 0 / 0
Класс для поиска десятичных данных по нескольким полям
    #39051477
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
breee3, в .net уже реализован бинарный поиск по отсортированному массиву: Array.BinarySearch<T> .
...
Рейтинг: 0 / 0
Класс для поиска десятичных данных по нескольким полям
    #39051481
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вообще можно было уже консольное приложение накидать, где сгенирировать 5 колонок по 10000 значений в каждой, или 10000 строк по 5 значений.
И убедиться в том, что рано думать о быстрых сортировках, индексах и бинарном поиске :)
...
Рейтинг: 0 / 0
Класс для поиска десятичных данных по нескольким полям
    #39051487
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
breee3, и я на Вашем месте сразу бы мобильное приложение стал писать. Изготовление алкогольных напитков наверняка не рядом с ПК происходит :)
...
Рейтинг: 0 / 0
Класс для поиска десятичных данных по нескольким полям
    #39051490
Gluck_13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
breee3 2 Gluck_13 это уже интереснее! вот только не понял как бинарный поиск должен работать... можно "на кошечках"?

А в Гугле забанили?
Если на кошечках, то идешь в середину отсортированного массива и сравниваешь значение с искомым. В зависимости от результата сравнения дальнейший поиск осуществляешь в первой или второй половине списка, идешь в середину этой половины и т.д., пока делить пополам не станет нечего. В случае с 10000 найдешь примерно за 14 итераций (Log2(10000))
...
Рейтинг: 0 / 0
Класс для поиска десятичных данных по нескольким полям
    #39051517
breee3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 skyANA
а мобильное на чем писать советуешь? совет хороший, но я всё-таки переживаю, что вычислений много у меня будет, так что сначала на десктоп..

2 Gluck_13
как льва в пустыне ловить, я знал, а как к себе применить не сообразил. Спасибо за разъяснения!
...
Рейтинг: 0 / 0
Класс для поиска десятичных данных по нескольким полям
    #39051544
breee3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 skyANA пардон, привык на форумах на "ты"
...
Рейтинг: 0 / 0
Класс для поиска десятичных данных по нескольким полям
    #39051565
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Gluck_13Производим обыкновенный бинарный поиск по индексному массиву, если не нашли строгое соответствие, то проверяем найденное и окрестные значения на минимальное отклонение от искомого.
Можно исходный массив сразу отсортировать по одному из полей, тогда индексных понадобится на один меньше.
На 10 000 записей Linq для DataSet asParralel без всяких индексных файлов быстро отработает
...
Рейтинг: 0 / 0
Класс для поиска десятичных данных по нескольким полям
    #39051663
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Класс для поиска десятичных данных по нескольким полям
    #39051664
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВskyANA Многомерные массивы (Руководство по программированию на C#)
Массивы массивов. Это к чему? :)

Какбэ и по моей ссылке есть переход к массивам массивов.
...
Рейтинг: 0 / 0
Класс для поиска десятичных данных по нескольким полям
    #39051740
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
breee3 2 skyANA
а мобильное на чем писать советуешь? совет хороший, но я всё-таки переживаю, что вычислений много у меня будет, так что сначала на десктоп..Apache Cordova, данные в SQLite... Много вычислений - это сколько и каких?
...
Рейтинг: 0 / 0
Класс для поиска десятичных данных по нескольким полям
    #39051898
breee3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 skyANA
Я еще всю теорию не уяснил, поэтому еще точно не скажу. Но один самых сложных расчетов должен будет считать с шагом времени не более секунды многочасовой процесс. На каждом шаге выполняя ..цать расчетов для десятков ступеней, и в каждом расчете несколько раз обращаться к этой таблице. То есть навскидку если ничего не забыл 10*3600*20*50=36*10^6 обращений к таблице
...
Рейтинг: 0 / 0
Класс для поиска десятичных данных по нескольким полям
    #39051904
kmaw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
диф. ур-я численно решать собрались?
...
Рейтинг: 0 / 0
Класс для поиска десятичных данных по нескольким полям
    #39051927
breee3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 kmaw не уверен, что до конца понял вопрос. Да численно. Диф.уравнения - наверно, нет
...
Рейтинг: 0 / 0
Класс для поиска десятичных данных по нескольким полям
    #39052180
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
breee3 2 skyANA
Я еще всю теорию не уяснил, поэтому еще точно не скажу. Но один самых сложных расчетов должен будет считать с шагом времени не более секунды многочасовой процесс. На каждом шаге выполняя ..цать расчетов для десятков ступеней, и в каждом расчете несколько раз обращаться к этой таблице. То есть навскидку если ничего не забыл 10*3600*20*50=36*10^6 обращений к таблицеИМХО Вы перемудрили.
...
Рейтинг: 0 / 0
37 сообщений из 37, показаны все 2 страниц
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Класс для поиска десятичных данных по нескольким полям
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]