Улучшение времени поиска в словарях Python с помощью строковых ключей.Python

Программы на Python
Ответить
Anonymous
 Улучшение времени поиска в словарях Python с помощью строковых ключей.

Сообщение Anonymous »

Я работаю над проектом, который предполагает генерацию случайных данных в соответствии с широким спектром конкретных распределений. Число генерируемых точек выборки может достигать сотен тысяч, миллионов или даже обрабатываться непрерывно, по одной выборке за раз, в течение сколь угодно длительного времени, поэтому оптимизация производительности в процессе генерации приветствуется, поскольку каждое незначительное улучшение может привести к значительному увеличению производительности при таком большом количестве выборок.
В рамках этого процесса оптимизации я использовал множество словарей в своих генераторах данных, чтобы сопоставлять входные/выходные данные, числовые параметры и подкомпоненты или кэшировать некоторые полезные значения. Почти во всех этих словарях есть строковые ключи, некоторые из которых мы знаем заранее, а другие нет. Доступ к этим словарям со строковыми ключами осуществляется на каждой итерации, а выполнение профилирования с использованием таких библиотек, как cProfile, показывает, что поиск по словарю занимает значительную часть времени выполнения, поэтому мне было интересно: есть ли способ оптимизировать поиск в словаре в Python, когда все его ключи являются строками?
Мне уже известны некоторые другие способы немного улучшить производительность, например предварительное выделение структуры с помощью dict.fromkeys(), когда ключи известны заранее, чтобы предотвратить коллизии, а на некоторых страницах в Интернете рекомендуется использовать более короткие ключи для сокращения общего времени хеширования.
Рефлексивно я думаю, что можно было бы разделить поиск строковых ключей на несколько «субхэш-карт» в зависимости от первого символа и, возможно, второго или третьего, если в словаре много ключей, и это могло бы помочь разделить время поиска, хотя это может быть возможно, что построение и обновление этой пользовательской структуры поиска занимает столько же времени, если не больше, чем простое хеширование полных строк?
Мне хотелось бы знать, задумывалась ли об этой проблеме раньше!

Подробнее здесь: https://stackoverflow.com/questions/798 ... tring-keys
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»