FastHashCollection, небольшая часть моей сборки

Лучший способ помочь другим, поделиться своими находками.

FastHashCollection, небольшая часть моей сборки

Сообщение bwolf88 21 апр 2016, 03:34

Выложил кусочек своей либы, а именно быстрые Dictionary и Hash и QueueDictionary, QueueHash. Первые работают ~2,5 раза быстрее нативных, но! только при использовании небольших структур в качестве ключей. Идеально подходит для Int, long и других (кастомных) в основе которых быстрое вычисление хеша.
Для Queue тесты делал давно, но в основе лежат первые 2 коллекции. Использую в основном для актуализации значений, например заменяя устаревшие данные в списке задач если пришли новые без повторного добавления индекса.

Тестировал только на своей машине на Win 7-10, как на других системах и осях сказать не могу :-\.

Ссылка на исходники https://github.com/LuchunPen/FastHashCollection
Возможно в будущем еще чего нибудь открою.
Сюда периодически чего нибудь выкладываю https://github.com/LuchunPen
Аватара пользователя
bwolf88
Адепт
 
Сообщения: 2184
Зарегистрирован: 30 апр 2014, 06:40
Skype: bwolf331

Re: FastHashCollection, небольшая часть моей сборки

Сообщение Ert Donuell 07 июн 2016, 19:54

Я бы заменил

Синтаксис:
Используется csharp
public static readonly int[] primesM2 =
{
    4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096,
    8192, 16384, 32768, 65536, 131072, 262144, 524288,
    1048576, 2097152, 4194304, 8388608
};

public static int GetPrimeM2(int capacity)
{
    if (capacity < primesM2[0]) { return primesM2[0]; }
    for (int i = 0; i < primesM2.Length; i++)
    {
        if (primesM2[i] >= capacity) { return primesM2[i]; }
    }
    return primesM2[primesM2.Length - 1];
}


на

Синтаксис:
Используется csharp
public static int GetPrimeM2(int capacity)
{
    var result = 4;
    while (result < capacity)
        result <<= 1;
    return result;
}


:)
Добавить dmitrii.baranov.yumasoft в Skype
Аватара пользователя
Ert Donuell
Старожил
 
Сообщения: 781
Зарегистрирован: 05 июл 2010, 09:50
Откуда: Санкт-Петербург
  • ICQ

Re: FastHashCollection, небольшая часть моей сборки

Сообщение bwolf88 07 июн 2016, 20:20

Фактически начальный размер там нужен только 1 раз при создании. Это в традиционном Dictionary при ресайзе размер контролируется значениями из таблицы.
Сюда периодически чего нибудь выкладываю https://github.com/LuchunPen
Аватара пользователя
bwolf88
Адепт
 
Сообщения: 2184
Зарегистрирован: 30 апр 2014, 06:40
Skype: bwolf331


Вернуться в Исходники (Копилка)

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2