powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Подскажите самые быстрые коллекции
17 сообщений из 42, страница 2 из 2
Подскажите самые быстрые коллекции
    #39176805
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander_fx,

1. Проверить / показать народу как обьявлен "dictionary of double". заменить на Dictionary<double, X>.
2. Собрать статистику <хэш, кол-во елементов>, как часто проиходит колизия. И показать здесь.
3. При создании словаря указать сразу его вместимость. 3*10^7 * 1.4
4. Создать словарь со собственной функцией хэша и сравнения. В функциях сравнение убрать/не далатаь проверку NaN.
5. быстрее словаря только массивы. Можно ускориться ими при определённых условия. но нужно больше информации.

P.S. Не часто встретиш потребность словаря с вещественным ключём. Автор, уваж любопытство, зачем?
...
Рейтинг: 0 / 0
Подскажите самые быстрые коллекции
    #39176816
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikronAlexander_fx,

1. Проверить / показать народу как обьявлен "dictionary of double". заменить на Dictionary<double, X>.
2. Собрать статистику <хэш, кол-во елементов>, как часто проиходит колизия. И показать здесь.
3. При создании словаря указать сразу его вместимость. 3*10^7 * 1.4
4. Создать словарь со собственной функцией хэша и сравнения. В функциях сравнение убрать/не далатаь проверку NaN.
5. быстрее словаря только массивы. Можно ускориться ими при определённых условия. но нужно больше информации.

P.S. Не часто встретиш потребность словаря с вещественным ключём. Автор, уваж любопытство, зачем?

ТС пишет:

"Работаю с биржевыми данными
данных много — 30 000 000 экземпляров записей
в каждом экземпляре есть поле — цена — тип Double
необходимо иметь быстрый доступ к экземпляру по цене
dictionary of double на мой взгляд работает медленно
подскажите есть ли что то быстрее
может есть специализированные библиотеки сторонних производителей.
или может кто то видел библиотеки для работы с большими обьемами данных.
."
...
Рейтинг: 0 / 0
Подскажите самые быстрые коллекции
    #39176822
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Winnipuh,

Я вобще-то читать умею, а вот представить себе не могу. зачем мне знать то у нас по цене 2.54? Предположим -
картошка, чудесно. А вдруг лук тоже по 2.54. Он нам уже не нужен? А почему не нужен а картошка нужна?
А если картошка по 2.53 то нам уже точно нужен лук? Я могу ещё представить задачу: найти все продукт с максимальной ценой не больше заданной. А вот с задахей автора нихего представить не могу.
...
Рейтинг: 0 / 0
Подскажите самые быстрые коллекции
    #39176824
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скорее всего это он неправильно сформулировал постановку задачи для сбора стакана заявок. Там, помимо цены, ключом выступает финансовый инструмент.
...
Рейтинг: 0 / 0
Подскажите самые быстрые коллекции
    #39176830
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikronWinnipuh,

Я вобще-то читать умею, а вот представить себе не могу. зачем мне знать то у нас по цене 2.54? Предположим -
картошка, чудесно. А вдруг лук тоже по 2.54. Он нам уже не нужен? А почему не нужен а картошка нужна?
А если картошка по 2.53 то нам уже точно нужен лук? Я могу ещё представить задачу: найти все продукт с максимальной ценой не больше заданной. А вот с задахей автора нихего представить не могу.

я хотел помочь людям ии занес с другого форума.

мне вот интересно: вещественные числа могут храниться в каком-то виде вместо 2.45 будет 2.4499999999999
и как искать?
...
Рейтинг: 0 / 0
Подскажите самые быстрые коллекции
    #39176841
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WinnipuhmikronWinnipuh,

Я вобще-то читать умею, а вот представить себе не могу. зачем мне знать то у нас по цене 2.54? Предположим -
картошка, чудесно. А вдруг лук тоже по 2.54. Он нам уже не нужен? А почему не нужен а картошка нужна?
А если картошка по 2.53 то нам уже точно нужен лук? Я могу ещё представить задачу: найти все продукт с максимальной ценой не больше заданной. А вот с задахей автора нихего представить не могу.

я хотел помочь людям ии занес с другого форума.

мне вот интересно: вещественные числа могут храниться в каком-то виде вместо 2.45 будет 2.4499999999999
и как искать?

вещественные нужно искать с заданной степенью погрешности
Пример из МСДН:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
// Initialize two doubles with apparently identical values
double double1 = .333333;
double double2 = (double) 1/3;
// Define the tolerance for variation in their values
double difference = Math.Abs(double1 * .00001);

// Compare the values
// The output to the console indicates that the two values are equal
if (Math.Abs(double1 - double2) <= difference)
   Console.WriteLine("double1 and double2 are equal.");
else
   Console.WriteLine("double1 and double2 are unequal.");



Поэтому-то и предложили заменить на decimal или предварительно умножать на 10000 и хранить как Int64
...
Рейтинг: 0 / 0
Подскажите самые быстрые коллекции
    #39176848
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79вещественные нужно искать с заданной степенью погрешности
Пример из МСДН:
Денежные значения нужно хранить в decimal...
...
Рейтинг: 0 / 0
Подскажите самые быстрые коллекции
    #39177026
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AxeleronДенежные значения нужно хранить в decimal...
А денежные знаки в банке.
...
Рейтинг: 0 / 0
Подскажите самые быстрые коллекции
    #39177056
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikronAxeleronДенежные значения нужно хранить в decimal...
А денежные знаки в банке.
Если есть таковые.
...
Рейтинг: 0 / 0
Подскажите самые быстрые коллекции
    #39177059
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Axeleronmikronпропущено...

А денежные знаки в банке.
Если есть таковые.

причем, при условии, если есть и те , и другие
...
Рейтинг: 0 / 0
Подскажите самые быстрые коллекции
    #39178179
Alexander_fx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikronAlexander_fx,

1. Проверить / показать народу как обьявлен "dictionary of double". заменить на Dictionary<double, X>.
2. Собрать статистику <хэш, кол-во елементов>, как часто проиходит колизия. И показать здесь.
3. При создании словаря указать сразу его вместимость. 3*10^7 * 1.4
4. Создать словарь со собственной функцией хэша и сравнения. В функциях сравнение убрать/не далатаь проверку NaN.
5. быстрее словаря только массивы. Можно ускориться ими при определённых условия. но нужно больше информации.

P.S. Не часто встретиш потребность словаря с вещественным ключём. Автор, уваж любопытство, зачем?


2- подскажите плиз как собрать данную статистику

p.s. - полностью согласен что double тут типиковая ветвь - буду переходить на int .
...
Рейтинг: 0 / 0
Подскажите самые быстрые коллекции
    #39178257
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander_fxсмущало то что в этом диапазоне много разряженностей которые в пустую тратят память но есть большой плюс доступ к элементу по индексу.Посмотрите в сторону LinkedHashMap . По сути это HashMap + Linked Key List.
К сожалению, аналога в .NET не существует.

Но есть пример реализации: NHibernate.Util.LinkedHashMap .
...
Рейтинг: 0 / 0
Подскажите самые быстрые коллекции
    #39178324
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UsmanAlexander_fxсмущало то что в этом диапазоне много разряженностей которые в пустую тратят память но есть большой плюс доступ к элементу по индексу.Посмотрите в сторону LinkedHashMap . По сути это HashMap + Linked Key List.
К сожалению, аналога в .NET не существует.

Но есть пример реализации: NHibernate.Util.LinkedHashMap .
а какие там преимущества?
Код: c#
1.
2.
3.
4.
5.
		public LinkedHashMap(int capacity, IEqualityComparer<TKey> equalityComparer)
		{
			header = CreateSentinel();
			entries = new Dictionary<TKey, Entry>(capacity, equalityComparer);
		}


по моему там обычная коллекция с обёрткой Entry, TValue значение которой находится в Value свойство Entry.
по моему по скорости работать будет так же как и обычный Dictionary
...
Рейтинг: 0 / 0
Подскажите самые быстрые коллекции
    #39178498
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtesа какие там преимущества?Фишка в том, что ключи хранятся в порядке добавления в коллекцию.
Т.о. избавляемся от разряженностей и при этом имеем доступ к элементу по индексу.
...
Рейтинг: 0 / 0
Подскажите самые быстрые коллекции
    #39178628
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander_fxmikronAlexander_fx,
2. Собрать статистику <хэш, кол-во елементов>, как часто проиходит колизия. И показать здесь.
3. При создании словаря указать сразу его вместимость. 3*10^7 * 1.4
4. Создать словарь со собственной функцией хэша и сравнения. В функциях сравнение убрать/не далатаь проверку NaN.
5. быстрее словаря только массивы. Можно ускориться ими при определённых условия. но нужно больше информации.


2- подскажите плиз как собрать данную статистику

И вобоще, кто с биржевыми данными работает и сам может статиску собрать.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
var stat = new Dictionaty<int, int>();
foreach(var d in your_source_here)
{
   int cnt;
   int code = d.getHashCode();
   stat.TryGetValue(code, out cnt);
   stat[code] = 1+ cnt;
}
...
Рейтинг: 0 / 0
Подскажите самые быстрые коллекции
    #39179356
Фотография Denis.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тогда уж так
Код: c#
1.
your_source_here.ToLookup(item => item).ToDictionary(item => item.Key, item => item.Count());
...
Рейтинг: 0 / 0
Подскажите самые быстрые коллекции
    #39179359
Фотография Denis.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну а вообще если инты с ценами то вообще халява
у цен обычно маленький диапазон.
Конвертишь в инты с заданной точностью, ищешь мин значение, это будет дельта, далее просто массив списков(если есть коллизии) где индекс это цена минус дельта
...
Рейтинг: 0 / 0
17 сообщений из 42, страница 2 из 2
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Подскажите самые быстрые коллекции
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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