Приложения .NET. Забота о битах и ​​байтах - PullRequest
1 голос
/ 13 апреля 2011

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

Какие области мне необходимо учитывать?

Конечно, вы скажете выполнить любую сложную обработку, например, база данных а не клиент а что еще?

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

Приветствия

Ответы [ 3 ]

2 голосов
/ 14 апреля 2011

Если вы не используете много данных, вы не увидите огромную разницу между int64 и int32.Разница между 1000 int32 и 1000 int64 составляет всего около 4K.Стандарт для целочисленных значений обычно int, который сопоставляется с int32, поэтому я рекомендую использовать его, если у вас нет особой потребности в 16 или 64.

Вот замечательный пост отРико Мариани , который парень производительности в Microsoft.Ссылка в его статье теперь мертва, но он говорит, что 97% вашего кода не нужно преждевременно оптимизировать.Вы можете потратить неделю на настройку своего приложения и поиск лучших структур данных, но этот один вызов веб-службы, размещенной на луне, замедлит все ваше приложение.Вначале беспокоитесь о вызове веб-службы, и как только вы настроите это столько, сколько сможете, вы можете беспокоиться об оптимизации типов данных.

Понимали ли люди, которые пишут спецификацию, что на самом деле означает приложение с привязкой к памяти?Вы бы предпочли иметь приложение, которое каждый раз занимает 10 секунд для извлечения кэшируемых данных из базы данных.Или вы предпочли бы, чтобы приложение предварительно кэшировало данные и «тратило» 2 МБ памяти?Я, я за последнее, и я думаю, что большинство пользователей тоже.

Но у вас есть спецификация, которой нужно следовать, поэтому я перестану проповедовать.Прочтите эту статью в журнале MSDN по оптимизации .Net .Я думаю, что вы найдете в нем отличный совет.

0 голосов
/ 14 апреля 2011

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

0 голосов
/ 13 апреля 2011

Используйте профилировщик памяти CLR, чтобы увидеть, как используется память.

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