А в памяти моей такая скрыта мощь...
-
- Уже с Приветом
- Posts: 15410
- Joined: 30 Apr 2003 16:43
Re: А в памяти моей такая скрыта мощь...
В системах с виртуальной памятью и "интеллекктуальным" механизмом "кражи" страниц в реальной памяти (frames) происходит адаптивный процесс накопления используемых страниц в реальной памяти.
Так что забивать реальную память неиспользуемыми страницами данных вовсе не обязательно, и даже глупо.
Так что забивать реальную память неиспользуемыми страницами данных вовсе не обязательно, и даже глупо.
-
- Уже с Приветом
- Posts: 5834
- Joined: 12 Apr 2001 09:01
- Location: нэподалеку от Ireland
Re: А в памяти моей такая скрыта мощь...
... скорее сперва "сколько жрет", ну а потом уже "сколько памяти" ;-)
-
- Уже с Приветом
- Posts: 13722
- Joined: 16 Jan 2001 10:01
Re: А в памяти моей такая скрыта мощь...
(и когда уже на wintel виртуальную память сделают?...zVlad wrote: 13 Feb 2018 15:12 В системах с виртуальной памятью и "интеллекктуальным" механизмом "кражи" страниц в реальной памяти (frames) происходит адаптивный процесс накопления используемых страниц в реальной памяти.
Так что забивать реальную память неиспользуемыми страницами данных вовсе не обязательно, и даже глупо.
![Wink ;-)](./images/smilies/wink.gif)
Засада в том, что приложения все данные которые читаются извне (даже с диска, который может иметь свой кеш, плюс кеш на уровне ОС) откладывают в кеш на уровне приложения (ассоциативный массив и проч.)
Таким образом для системы эта память вполне себе используемая, и отбросить её в долгий ящик невозможно.
-
- Уже с Приветом
- Posts: 15798
- Joined: 01 Mar 2008 15:14
Re: А в памяти моей такая скрыта мощь...
Вы же слышали о том, что преждевременная оптимизация - зло? Так зачем экономить память пока ее все еще хватает?
-
- Уже с Приветом
- Posts: 13722
- Joined: 16 Jan 2001 10:01
Re: А в памяти моей такая скрыта мощь...
Вообще-то неэкономия памяти, бездумное кеширование - тоже результат преждевременной оптимизации: во многих(большинстве) случаях никто не смотрит насколько кеширование реально помогает.OtherSide wrote: 13 Feb 2018 15:59 Вы же слышали о том, что преждевременная оптимизация - зло? Так зачем экономить память пока ее все еще хватает?
-
- Уже с Приветом
- Posts: 13722
- Joined: 16 Jan 2001 10:01
-
- Уже с Приветом
- Posts: 15410
- Joined: 30 Apr 2003 16:43
Re: А в памяти моей такая скрыта мощь...
Я не говорил что на wintel нет виртуальной памяти.....Palych wrote: 13 Feb 2018 15:30(и когда уже на wintel виртуальную память сделают?...zVlad wrote: 13 Feb 2018 15:12 В системах с виртуальной памятью и "интеллекктуальным" механизмом "кражи" страниц в реальной памяти (frames) происходит адаптивный процесс накопления используемых страниц в реальной памяти.
Так что забивать реальную память неиспользуемыми страницами данных вовсе не обязательно, и даже глупо.)
Засада в том, что приложения все данные которые читаются извне (даже с диска, который может иметь свой кеш, плюс кеш на уровне ОС) откладывают в кеш на уровне приложения (ассоциативный массив и проч.)
Таким образом для системы эта память вполне себе используемая, и отбросить её в долгий ящик невозможно.
-
- Уже с Приветом
- Posts: 946
- Joined: 24 Sep 2013 05:58
- Location: US\GA
Re: А в памяти моей такая скрыта мощь...
А также разные connection pools, service listeners, etc.Palych wrote: 13 Feb 2018 16:18 Вообще-то неэкономия памяти, бездумное кеширование - тоже результат преждевременной оптимизации: во многих(большинстве) случаях никто не смотрит насколько кеширование реально помогает.
-
- Уже с Приветом
- Posts: 13722
- Joined: 16 Jan 2001 10:01
Re: А в памяти моей такая скрыта мощь...
Извиняюсь, не догнал.zVlad wrote: 13 Feb 2018 16:30Я не говорил что на wintel нет виртуальной памяти.....Palych wrote: 13 Feb 2018 15:30(и когда уже на wintel виртуальную память сделают?...zVlad wrote: 13 Feb 2018 15:12 В системах с виртуальной памятью и "интеллекктуальным" механизмом "кражи" страниц в реальной памяти (frames) происходит адаптивный процесс накопления используемых страниц в реальной памяти.
Так что забивать реальную память неиспользуемыми страницами данных вовсе не обязательно, и даже глупо.)
Засада в том, что приложения все данные которые читаются извне (даже с диска, который может иметь свой кеш, плюс кеш на уровне ОС) откладывают в кеш на уровне приложения (ассоциативный массив и проч.)
Таким образом для системы эта память вполне себе используемая, и отбросить её в долгий ящик невозможно.
То есть - если данные кешируются, но кеш не используется - эти данные в итоге упадут в своп?
Я не спец во внутреннем устройстве современных систем, типа JVM.
Но на основании простого житейского опыта предположу что даже теоретически никуда эти данные не выпадут.
Прошу поправить мои доводы тех кто в теме:
1. На уровне ОС память распределяется/свопится страницами. JVM управляет объектами, которые неизбежно раскидываются между страницами.
2. Объекты в JVM постоянно "дергаются" сборщиком мусора.
-
- Уже с Приветом
- Posts: 143
- Joined: 29 Apr 2014 12:22
Re: А в памяти моей такая скрыта мощь...
Ну точно не в 20, а наверное раза в полтора, ну может в 2. A[i,j]? Что за языг?Dmitry67 wrote: 13 Feb 2018 12:28 На самом деле чем больше память, тем важнее писать cache-friendly code
Например, производительность двух фрагментов кода ниже отличается в 20 раз примерно:
Code: Select all
int sum = 0; for (int i=0; i<10000; i++) for (int j=0; j<10000; j++) sum += A[i,j];
Code: Select all
int sum = 0; for (int i=0; i<10000; i++) for (int j=0; j<10000; j++) sum += A[j,i];
-
- Уже с Приветом
- Posts: 28294
- Joined: 29 Aug 2000 09:01
- Location: SPB --> Gloucester, MA, US --> SPB --> Paris
Re: А в памяти моей такая скрыта мощь...
хоть C#, хоть C, хоть C++fleshold wrote: 14 Feb 2018 08:22Ну точно не в 20, а наверное раза в полтора, ну может в 2. A[i,j]? Что за языг?Dmitry67 wrote: 13 Feb 2018 12:28 На самом деле чем больше память, тем важнее писать cache-friendly code
Например, производительность двух фрагментов кода ниже отличается в 20 раз примерно:
Code: Select all
int sum = 0; for (int i=0; i<10000; i++) for (int j=0; j<10000; j++) sum += A[i,j];
Code: Select all
int sum = 0; for (int i=0; i<10000; i++) for (int j=0; j<10000; j++) sum += A[j,i];
Или уже выросло поколение которое пишет только A[j]?
Матриц на вас нет!)))
разница 15-20 раз - вы ее не дооцениваете.
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
-
- Уже с Приветом
- Posts: 15798
- Joined: 01 Mar 2008 15:14
-
- Уже с Приветом
- Posts: 28294
- Joined: 29 Aug 2000 09:01
- Location: SPB --> Gloucester, MA, US --> SPB --> Paris
Re: А в памяти моей такая скрыта мощь...
Значит с фортраном перепутал)
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
-
- Уже с Приветом
- Posts: 549
- Joined: 07 Jan 2016 13:04
Re: А в памяти моей такая скрыта мощь...
Я вообще не понимаю почему должна возникнуть даже двукратная разница. У нас же по идее при аллокации памяти под n-мерный массив сразу должна выделяться вся память. Соответственно, при изменении значения одного из элементов нам просто нужно найти указатель на первую ячейку в выделенном пространстве. Чего я упускаю?
-
- Уже с Приветом
- Posts: 143
- Joined: 29 Apr 2014 12:22
Re: А в памяти моей такая скрыта мощь...
Dmitry67 wrote: 14 Feb 2018 09:52хоть C#, хоть C, хоть C++fleshold wrote: 14 Feb 2018 08:22Ну точно не в 20, а наверное раза в полтора, ну может в 2. A[i,j]? Что за языг?Dmitry67 wrote: 13 Feb 2018 12:28 На самом деле чем больше память, тем важнее писать cache-friendly code
Например, производительность двух фрагментов кода ниже отличается в 20 раз примерно:
Code: Select all
int sum = 0; for (int i=0; i<10000; i++) for (int j=0; j<10000; j++) sum += A[i,j];
Code: Select all
int sum = 0; for (int i=0; i<10000; i++) for (int j=0; j<10000; j++) sum += A[j,i];
Или уже выросло поколение которое пишет только A[j]?
Матриц на вас нет!)))
разница 15-20 раз - вы ее не дооцениваете.
Comma в языке C++ sequencing оператор.
10000*10000*4 примерно 380 метров. Проверить, так то несложно. Да и не стал бы я палиться написав сообщение что то недооценив. В случае
Code: Select all
A[i][j]
Code: Select all
A[j][i]