Что обеспечивает лучшую производительность для больших наборов данных? Вложенные словари или словарь объектов? - PullRequest
1 голос
/ 04 ноября 2019

Я повторяю этот шаблон при извлечении из нескольких таблиц базы данных:

records = {'p_key': { "record": r, "A": list(), "B": list(), "C" : list() } for r in db_records}

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

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

1 Ответ

2 голосов
/ 04 ноября 2019

Практически нет разницы в производительности между словарями и обычными объектами классов, потому что внутренне объекты используют словари для обработки своих атрибутов.

Однако вы должны рассмотреть возможность использования классов с __slots__. Здесь - подробное объяснение того, что это такое и его производительность.

Другой вариант - использование библиотеки pandas для работы с большим набором данных.

...