Действительно ли разумно для современных приложений использовать большие объемы памяти?

Это код, который у меня есть до сих пор:

  import re 
  from collections import defaultdict 
  file = open("mytext.txt","r",encoding="utf-8") 
  l = [] 
  d = file.read() 

  x = re.split(r"=+", d) 
  for i in range(len(x)): 
     l.append(x[i]) 

  d = defaultdict(list) 
 for i, line in enumerate(l): 
    [d[word].append(i) for word in line]

Кажется, он работает, но ключи - это буквы, а значения - это подсписки, в которых встречается буква

9
задан 6 revs, 2 users 80% 28 February 2009 в 17:36
поделиться

7 ответов

Действительно ли приемлемо, когда у большинства людей есть 1 или 2 гигабайта RAM на их PCS?

Думайте об этом - хотя Ваши 200 МБ являются маленькими и ничто для волнения о, учитывая предел на 2 ГБ, у всех остальных также есть приложения, которые берут массы RAM. Добавьте их вместе, и Вы находите, что 2 ГБ, которых я имею очень быстро, получают все израсходованные. Конечный результат - Ваше приложение кажется медленным, голодный ресурс и занимает много времени для запущений.

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

Как реальный пример, я раньше кодировал с VC6 на моей старой машине 512 МБ 1.7 ГГц, и вещи были прекрасны - я мог открыть 4 или 5 копий наряду с Outlook, Word и веб-браузер, и моя машина была быстро реагирующей.

Сегодня у меня есть двухпроцессорное поле сервера на 2.8 ГГц с 3 ГБ RAM, но я не могу реалистично выполнить больше чем 2 копии Visual Studio 2008, они оба берут возрасты для запуска (поскольку вся эта RAM все еще должна быть скопирована в и настроена, наряду со всеми другими затратами на запуск мы теперь имеем), и даже Word берет возрасты для загрузки документа.

Таким образом, если можно уменьшить использование памяти, Вы должны. Не думайте, что можно просто использовать любую чрезмерно увеличенную в размерах платформу/библиотеку/практику, которую Вы хотите безнаказанно.

9
ответ дан 4 December 2019 в 08:53
поделиться

Существует несколько вещей, о которых необходимо думать.

1/Вы имеете 256M теперь? Я не думал бы так - моей самой маленькой машиной памяти является 2G так 200M, приложение не является большой частью проблемы.

2a/, Что 200M Вы говорите о, не мог бы быть "реальной" памятью. Это может просто быть адресное пространство, в этом случае, это не могло бы все быть в физической памяти сразу. Некоторые биты могут только быть втянуты к физической памяти, когда Вы принимаете решение сделать тайные вещи.

2b/Это может также быть совместно использовано другими процессами (такими как DLL). Это означает, что это могло быть только сохранено в физической памяти как одна копия, но присутствовать в адресном пространстве многих процессов. Тем путем использование амортизируется по тем многим процессам. И 2a и 2b зависят от того, куда Ваша фигура 200M на самом деле произошла из (который я не знаю и, запуская Linux, я - unlikel для обнаружения без Вас говорящий мне :-).

3/, Даже если это - физическая память, современные операционные системы, не похожи на старый DOS или Windows 3.1 - у них есть виртуальная память, где биты приложений могут быть разбиты на страницы (данные) или выброшены полностью (код, так как это может всегда перезагружать от исполняемого файла). Виртуальная память дает Вам способность использовать намного больше памяти, чем Ваша фактическая физическая память.

3
ответ дан 4 December 2019 в 08:53
поделиться

Если можно хорошо использовать RAM, это - обязанность использовать его.

2
ответ дан 4 December 2019 в 08:53
поделиться

Много современных приложений используют в своих интересах существование большей памяти для кэширования больше. Некоторым нравится Firefox, и SQL-сервер имеют явные настройки для того, сколько памяти они будут использовать. По-моему, глупо не использовать доступную память - какой смысл того, чтобы иметь 2 ГБ RAM, если Ваши приложения все сидят без дела на уровне 10 МБ, оставляя 90% Вашей физической памяти неиспользованными. Конечно, если Ваше приложение действительно использует кэширование как это, это лучше быть способным освобождать ту память, если перегрузка файла подкачки запускается, или позвольте пользователю ограничивать размер кэша вручную.

Вы видите преимущество этого путем выполнения запроса достойного размера против SQL-сервера. В первый раз, когда Вы выполняете запрос, может потребоваться 10 секунд. Но когда Вы выполняете тот точный запрос снова, он берет меньше, чем секунда - почему? План запросов был только скомпилирован в первый раз и кэшировался для использования позже. Страницы базы данных, которые должны были быть прочитаны, были только загружены из диска в первый раз - во второй раз, когда они все еще кэшировались в RAM. При правильной организации, чем больше памяти Вы используете для кэширования (пока Вы не сталкиваетесь с подкачкой страниц), тем быстрее можно повторно получить доступ к данным. Вы будете видеть то же самое в больших документах (например, в Word и Acrobat) - когда Вы прокрутите к новым областям документа, вещи являются медленными, но после того как это представлялось и кэшировалось, вещи убыстряются. Если у Вас нет достаточной памяти, тот кэш начинает перезаписываться, и идущий в старые части документа становится медленным снова.

3
ответ дан 4 December 2019 в 08:53
поделиться

Несколько лет назад 256 МБ были нормой для ПК, затем Outlook использовал приблизительно приблизительно 30 - 35 МБ памяти, это составляет приблизительно 10% доступной памяти, Теперь ПК имеет 2 ГБ или больше как норму, и перспектива использует 200 МБ памяти, это составляет приблизительно 10% также.

1-е заключение: поскольку больше памяти является доступным использованием приложений больше из него.

2-е заключение: какой период времени, который Вы выбираете, существует приложения, которые являются истинными пожирателями ресурсов памяти (как Outlook) и приложения, которые являются очень эффективной мудрой памятью.

3-е заключение: потребление памяти приложения не может понизиться со временем, еще 640K был бы достаточно даже сегодня.

1
ответ дан 4 December 2019 в 08:53
поделиться

Это полностью зависит от приложения.

0
ответ дан 4 December 2019 в 08:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: