Meu código Python armazena milhões de IDs em várias estruturas de dados para implementar um algoritmo clássico. O tempo de execução é bom, mas o uso de memória é péssimo.
Esses IDs são int
s. Presumo que, como os ints do Python começam com 28 bytes e crescem, o preço é alto. Como são apenas IDs opacos, e não objetos matemáticos propriamente ditos, eu conseguiria me virar com apenas 4 bytes para eles.
Existe uma maneira de armazenar IDs em Python sem usar os 28 bytes completos? Por exemplo, preciso colocá-los como chaves e valores em dicionários?
Observação: A solução comum de usar algo como BumPy não funcionará aqui, porque não é um array contíguo. São chaves e valores em um dicionário, dicionários de dicionários, etc.
Também estou aberto a outros interpretadores Python que consomem menos memória para ints.