Я хочу `алгоритм быстрого свертывания` ключевые слова для поиска

В настоящее время я работаю над модулем обработки данных,
и мне нужно свернуть несколько идентичных записей с функцией агрегирования.

Например,

Если у нас есть таблица ниже,

---------------------------------
| Dimension1 | Dimension2 | Sum |
---------------------------------
|      A     |      B     |  12 |
|      A     |      B     |  23 |
|      B     |      C     |  42 |
|      C     |      B     |  33 |
|      C     |      B     |  22 |
---------------------------------

После накопления мы получили

---------------------------------
| Dimension1 | Dimension2 | Sum |
---------------------------------
|      A     |      B     |  35 |
|      B     |      C     |  42 |
|      C     |      B     |  55 |
---------------------------------

Я собрал все идентичные строки, используя хэш-идентификатор, в структуру данных словаря. (например, Hash Map, Tree и т. д.)

Ниже мой код C ++

unsigned int Record::GetHashCode()
{
unsigned int hash = 1;
for(const auto dim : *this)
{
hash = 31*hash + dim.HashCode();
}

return hash;
}

unsigned int Dimension::HashCode()
{
// Just burrowed java's hash function
// Please see https://en.wikipedia.org/wiki/Java_hashCode()
}

void Gatherer::Gather(const vector<Record>& records)
{
for(const auto& record : records)
{
if(table.find(record.GetHashCode()) == table.end())
{
// No this record in table
table[record.GetHashCode()] = record;
}
else
{
table[record.GetHashCode()]["metric"] += record["metric"];
}
}
}

Да, это довольно просто, и это производительность не плохая и не супер хорошая.

Проблема в том, что в ближайшем будущем возможно будет добавлено больше измерений.
Количество измерений будет 80 и более.
Я боюсь, что текущая сборка на основе хеша не подходит для записи большого размера.

Так что я ищу алгоритм свертки лучше, чем мой.

Есть бумага или что-то для быстрого алгоритма свертки?
Любые идеи приветствуются!
Или, если вы заняты, просто подбросьте мне ключевые слова поиска также приветствуется!

Спасибо хорошего дня.

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]