Самый ценный инструмент, когда охота производительность узкие места измерение. Вам нужно выяснить, у какого кода есть проблема, а затем меру для пропусков кеша, если это действительно является проблемой.
Что касается общих идей, вам необходимо снизить частоту промахов. Поэтому, когда вы извлекаете данные в память, вам нужно как можно больше работать над ней, прежде чем покидать ее, а не передавать данные. Сравните, например,
for i in data:
f(i)
for i in data:
g(i)
for i in data:
h(i)
, который пересекает список три раза. Может быть, можно написать это как:
for i in data:
h(g(f(i)))
опускание траверсы только один раз - как правило, ведет к уменьшению числа промахов.
Еще один достойный трюк - подумать о структуре данных. Шаблоны доступа двоичного дерева сильно отличаются от шаблонов хэш-таблицы. Но сначала начните измерение, чтобы быть уверенным, что у вас есть промахи, и что это промахи - это ваша проблема.
И, наконец, даже с низкой пропускной способностью вы можете в целом снизить пропускную способность памяти. Если вы перемещаете много и много данных, оно имеет тенденцию быть медленным - поскольку скорости памяти растут гораздо ниже, чем количество транзисторов.
Я не думаю, что это плохой вопрос, но это широкий вопрос, поэтому ответы, которые вы получите, одинаково расплывчаты. –