2010-11-17 8 views
1

Я работаю над крупномасштабным программным обеспечением. Он управляется памятью/данными, перемещающимися между огромным количеством сложных моделей.Любая идея улучшить производительность кеша для крупномасштабной программы?

Иногда промахи кеша слишком высокие, а производительность не очень хорошая. Но сценарий выглядит слишком сложным для меня.

Я просто хочу получить некоторые общие идеи о том, как уменьшить промаху кэша и улучшить производительность памяти.

Appreate для комментариев.

Спасибо!

+1

Я не думаю, что это плохой вопрос, но это широкий вопрос, поэтому ответы, которые вы получите, одинаково расплывчаты. –

ответ

1

Самый ценный инструмент, когда охота производительность узкие места измерение. Вам нужно выяснить, у какого кода есть проблема, а затем меру для пропусков кеша, если это действительно является проблемой.

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

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))) 

опускание траверсы только один раз - как правило, ведет к уменьшению числа промахов.

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

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

0

Это гигантская тема без подробностей в вопросе. Итак, я бы предложил купить больше оперативной памяти.

+0

Я бы сказал: купите больше оперативной памяти и скомпилируйте сложные модели. – Simone

1

Возможно, у вас есть недостатки в кеше, но не предполагайте, что это проблема.

Узнайте, где проблемы и исправить их, как в this example.

По моему опыту, чем больше программное обеспечение, тем больше проблем (и возможностей для его ускорения).

Часто программное обеспечение было разработано на быстрых машинах с небольшими наборами входных данных, поэтому разработчики никогда не чувствовали необходимости в профиле и устранении ошибок производительности. хорошие новости это они все там, просто ждут вас, чтобы найти и удалить их, получая огромное ускорение, за которое вы можете взять кредит!

Смежные вопросы