Я работаю над проектом, который предполагает генерацию случайных данных в соответствии с широким спектром конкретных распределений. Число генерируемых точек выборки может достигать сотен тысяч, миллионов или даже обрабатываться непрерывно, по одной выборке за раз, в течение сколь угодно длительного времени, поэтому оптимизация производительности в процессе генерации приветствуется, поскольку каждое незначительное улучшение может привести к значительному увеличению производительности при таком большом количестве выборок.
В рамках этого процесса оптимизации я использовал множество словарей в своих генераторах данных, чтобы сопоставлять входные/выходные данные, числовые параметры и подкомпоненты или кэшировать некоторые полезные значения. Почти во всех этих словарях есть строковые ключи, некоторые из которых мы знаем заранее, а другие нет. Доступ к этим словарям со строковыми ключами осуществляется на каждой итерации, а выполнение профилирования с использованием таких библиотек, как cProfile, показывает, что поиск по словарю занимает значительную часть времени выполнения, поэтому мне было интересно: есть ли способ оптимизировать поиск в словаре в Python, когда все его ключи являются строками?
Мне уже известны некоторые другие способы немного улучшить производительность, например предварительное выделение структуры с помощью dict.fromkeys(), когда ключи известны заранее, чтобы предотвратить коллизии, а на некоторых страницах в Интернете рекомендуется использовать более короткие ключи для сокращения общего времени хеширования.
Рефлексивно я думаю, что можно было бы разделить поиск строковых ключей на несколько «субхэш-карт» в зависимости от первого символа и, возможно, второго или третьего, если в словаре много ключей, и это могло бы помочь разделить время поиска, хотя это может быть возможно, что построение и обновление этой пользовательской структуры поиска занимает столько же времени, если не больше, чем простое хеширование полных строк?
Мне хотелось бы знать, задумывалась ли об этой проблеме раньше!
Подробнее здесь: https://stackoverflow.com/questions/798 ... tring-keys
Улучшение времени поиска в словарях Python с помощью строковых ключей. ⇐ Python
Программы на Python
1770400020
Anonymous
Я работаю над проектом, который предполагает генерацию случайных данных в соответствии с широким спектром конкретных распределений. Число генерируемых точек выборки может достигать сотен тысяч, миллионов или даже обрабатываться непрерывно, по одной выборке за раз, в течение сколь угодно длительного времени, поэтому оптимизация производительности в процессе генерации приветствуется, поскольку каждое незначительное улучшение может привести к значительному увеличению производительности при таком большом количестве выборок.
В рамках этого процесса оптимизации я использовал [b]множество словарей[/b] в своих генераторах данных, чтобы сопоставлять входные/выходные данные, числовые параметры и подкомпоненты или кэшировать некоторые полезные значения. Почти во всех этих словарях есть [b]строковые ключи[/b], некоторые из которых мы знаем заранее, а другие нет. Доступ к этим словарям со строковыми ключами осуществляется на каждой итерации, а выполнение профилирования с использованием таких библиотек, как cProfile, показывает, что поиск по словарю занимает значительную часть времени выполнения, поэтому мне было интересно: [b]есть ли способ оптимизировать поиск в словаре в Python, когда все его ключи являются строками?[/b]
Мне уже известны некоторые другие способы немного улучшить производительность, например предварительное выделение структуры с помощью dict.fromkeys(), когда ключи известны заранее, чтобы предотвратить коллизии, а на некоторых страницах в Интернете рекомендуется использовать более короткие ключи для сокращения общего времени хеширования.
Рефлексивно я думаю, что можно было бы разделить поиск строковых ключей на несколько «субхэш-карт» в зависимости от первого символа и, возможно, второго или третьего, если в словаре много ключей, и это могло бы помочь разделить время поиска, хотя это может быть возможно, что построение и обновление этой пользовательской структуры поиска занимает столько же времени, если не больше, чем простое хеширование полных строк?
Мне хотелось бы знать, задумывалась ли об этой проблеме раньше!
Подробнее здесь: [url]https://stackoverflow.com/questions/79882907/improving-lookup-time-on-python-dictionaries-with-string-keys[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия