Есть идеи по улучшению производительности кеша для крупномасштабных программ? - PullRequest
1 голос
/ 17 ноября 2010

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

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

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

Оценить любой комментарий.

Спасибо!

Ответы [ 3 ]

1 голос
/ 17 ноября 2010

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

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

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

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

1 голос
/ 17 ноября 2010

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

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

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 голосов
/ 17 ноября 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...