Я заканчиваю программу, которая выполняет большое количество вычислений, и пытаюсь оптимизировать самый внутренний цикл.
Вычисление, на которое я сейчас обращаюсь, повторяет большое количество пар слов и делаеттаблица количества соответствующих пар символов.Например, одна пара слов может быть:
voice
louse
, а пары символов будут (v, l), (o, o), (i, u), (c, s),и (e, e), и тогда все эти пары будут иметь счет 1. Если комбинация (v, l) когда-либо встретится снова в другом слове, это увеличит этот счет до двух.
Чтоструктуру данных я должен использовать для максимальной производительности?Учитывая два символа, мне нужно получить количество для этой пары.В настоящее время я использую вложенную хеш-таблицу, объявление которой выглядит следующим образом:
Dim data As New Dictionary(of String, Dictionary(of String, Integer))
Используя эту структуру данных, программа должна хешировать две строки для каждого целого числа, которое она получает.Для каждой пары символов он должен сначала проверить, есть ли пара в хеш-таблице, а если нет, добавить еще два хэша.Я также рассмотрел одноуровневую хеш-таблицу, в которой ключом являются два соединенных вместе символа, поэтому key = "vl" и value = 1, но я прочитал, что конкатенация строк в VB относительно медленная.
тогда мои вопросы:
Насколько быстры словари в VB?Разве четыре хеша будут быстрее, чем один хеш и конкатенация строк (два уровня по сравнению с хэш-таблицей одного уровня)?
Можете ли вы придумать лучшую структуру для хранения таких данных, которая позволяет быстро добавлять и извлекать данные?*