2014-09-09 3 views
0

Я собираюсь сделать проект в ближайшее время для своей степени, требующей грубой силы хруста и анализа текста. Это, очевидно, означает много чтения и записи в ОЗУ.Самое эффективное управление памятью C#

Что является наиболее эффективным методом управления памятью в C#? В прошлом семестре я познакомился с memory marshal class и нашел, что это очень эффективный метод чтения и записи больших объемов данных в ОЗУ, однако, возможно, это был мой опыт. Я надеюсь, что кто-то может дать мне несколько советов или предложений по альтернативам или рекомендациям по управлению памятью на C#.

Благодаря

+1

Универсальная передовая практика: делайте то, что вам нужно. Попробуйте сделать свое приложение без использования сортировки (или чего-нибудь неуправляемого). Он работает в огромном большинстве случаев. Если вы узнаете через эмпирическое представление, вы попадаете в один из тех редких случаев, вам нужна необработанная память, исследуйте ее. Но не раньше. В большинстве случаев управляемая память будет намного эффективнее, чем все, что вы можете придумать самостоятельно. – Falanwe

ответ

4

Самая эффективная система управления памятью дико меняется в зависимости от того, что вы пытаетесь сделать на практике.

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

Так что мой совет будет следующим. Попробуйте полностью управляемое выполнение, несколько хороших методами, чтобы предотвратить слишком много памяти:

  • всегда утилизируйте одноразовые предметы
  • пытается mutualizing тяжелых активов, байты буферов, например: вместо того, чтобы создать новый буфер каждый раз, когда вам нужен один, используйте буферный пул

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

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

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