Словарь может иметь много накладных расходов для такого количества элементов, и он полагается на хорошее распределение хешей для идеальной производительности.
Возможно, вы захотите запустить некоторые тесты в сравнении с другими подходами, возможно ли будет просто выделить массив и использовать ключ в качестве индекса? Например, object [long], если у вас есть только возможные значения от 0 до 1 миллиона, тогда для массива это займет менее 8 МБ и будет намного быстрее, чем для словаря.
Если вы не можете сделать это напрямую, у вас может быть поиск уникального индекса long to int? Например, наличие словаря, который позволяет вам переводить long в int, который постоянно увеличивается, когда появляется новый long, которого вы не видели до того, как ему было назначено место в массиве.
Или, возможно, есть более сложный подход с зубчатыми массивами, такими как object [sequenceInt] [uniqueIndexInt]. Это действительно зависит от того, как вы будете получать доступ к данным позже