Re[45]: Коробочные продукты на .NET (НЕ для программистов/ад
От: _d_m_  
Дата: 17.06.09 07:17
Оценка:
Здравствуйте, kuj, Вы писали:

H>>>>>Ну если там кроме работы со строкой ничего небыло... Память смотрел Process Explorer'ом, у него цифры актуальные.


___>>>>Т.е. он сказал: память на эту строку 75 мб.


H>>>Нет, а шо? Но ты же наверняка знаешь, что в StringBuilder'е преаллокация используется. Так что, не вижу ничего удивительного...


___>>Т.е. ты указал Capacity = 75 * 1024 * 1024;

___>>Ну тогда конечно

kuj>/ 2 там utf16


Да-да точно — Capacity это число символов.
Re[44]: Коробочные продукты на .NET (НЕ для программистов/ад
От: hattab  
Дата: 17.06.09 07:23
Оценка:
Здравствуйте, _d_m_, Вы писали:

___>>>Т.е. он сказал: память на эту строку 75 мб.


H>>Нет, а шо? Но ты же наверняка знаешь, что в StringBuilder'е преаллокация используется. Так что, не вижу ничего удивительного...


___>Т.е. ты указал Capacity = 75 * 1024 * 1024;

___>Ну тогда конечно

Capacity я, разумеется, не устанавливал.
Re[42]: Коробочные продукты на .NET (НЕ для программистов/ад
От: hattab  
Дата: 17.06.09 07:25
Оценка:
Здравствуйте, _d_m_, Вы писали:

H>>Ну если там кроме работы со строкой ничего небыло... Память смотрел Process Explorer'ом, у него цифры актуальные.


___>http://www.rsdn.ru/forum/dotnet/1883851.1.aspx
Автор: GlebZ
Дата: 05.05.06


Если бы ты внимательно читал, то увидел бы, что речь идет вовсе не о Working Set
Re[39]: Коробочные продукты на .NET (НЕ для программистов/ад
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 17.06.09 07:33
Оценка:
Здравствуйте, hattab, Вы писали:

H>Здравствуйте, _d_m_, Вы писали:


H>>>У StringBuilder'а двукратный оверхед по памяти, какой же там массив чаров?


___>>

___>>В смысле: там одна и таже строка продублирована? Как такое тебе в голову могло прийти...

H>В тесте создавалась строка размером в 30Mb, а процесс кушал 75


Код покажи.
Re[43]: Коробочные продукты на .NET (НЕ для программистов/ад
От: kuj  
Дата: 17.06.09 07:51
Оценка:
Здравствуйте, hattab, Вы писали:

H>>>Ну если там кроме работы со строкой ничего небыло... Память смотрел Process Explorer'ом, у него цифры актуальные.


___>>http://www.rsdn.ru/forum/dotnet/1883851.1.aspx
Автор: GlebZ
Дата: 05.05.06


H>Если бы ты внимательно читал, то увидел бы, что речь идет вовсе не о Working Set


Я тебе открою страшную тайну: речь таки о working set, а ты откровенно ламерствуешь. ;]
Re[44]: Коробочные продукты на .NET (НЕ для программистов/ад
От: kuj  
Дата: 17.06.09 07:57
Оценка:
Здравствуйте, kuj, Вы писали:


H>>>>Ну если там кроме работы со строкой ничего небыло... Память смотрел Process Explorer'ом, у него цифры актуальные.


___>>>http://www.rsdn.ru/forum/dotnet/1883851.1.aspx
Автор: GlebZ
Дата: 05.05.06


H>>Если бы ты внимательно читал, то увидел бы, что речь идет вовсе не о Working Set


kuj>Я тебе открою страшную тайну: речь таки о working set, а ты откровенно ламерствуешь. ;]


ликбез специально для хатабчека http://www.ddj.com/windows/184416804
Re: Коробочные продукты на .NET (НЕ для программистов/админо
От: Hobot Bobot США  
Дата: 17.06.09 08:50
Оценка:
Здравствуйте, Jack128, Вы писали:

J>Собственно такие существуют?? Желательно более менее распространенные, хотя бы от 50к пользователей.


Какие-то из приложений, входящие в Windows Live Essentials требуют .НЕТ
Если учесть, что оно приезжает по Windows Update, то 50 килоюзеров должно набраться довольно быстро.
What a piece of work is a man! how noble in reason! how infinite in faculty! in form and moving how express and admirable! in action how like an angel! in apprehension how like a god! the beauty of the world! the paragon of animals!
Re[40]: Коробочные продукты на .NET (НЕ для программистов/ад
От: hattab  
Дата: 17.06.09 09:06
Оценка:
Здравствуйте, gandjustas, Вы писали:

H>>В тесте создавалась строка размером в 30Mb, а процесс кушал 75


G>Код покажи.


Еще один внимательный... Синтетику посмотри.
Re[44]: Коробочные продукты на .NET (НЕ для программистов/ад
От: CreatorCray  
Дата: 17.06.09 09:12
Оценка: +1 -1 :)
Здравствуйте, kuj, Вы писали:

kuj>Нет, Process Explorer показал тебе размер workset`а. Заканчивай ламерствовать, хаттабчик. ;]

Сам заканчивай ламерить!
Тыб хоть раз посмотрел что для .NET процесса можно увидеть в ProceXP.
Особенно на закладке .NET для .NET CLR Memory.

Там вообще много интересных параметров.
Например реалтайм счетчик Total Runtime Checks и разделы .NET CLR Interop, .NET CLR Jit

Кроме того есть еще мегатул VMView, который тебе покажет раскладку по адресному пространству.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[45]: Коробочные продукты на .NET (НЕ для программистов/ад
От: kuj  
Дата: 17.06.09 09:20
Оценка: :)
Здравствуйте, CreatorCray, Вы писали:

CC>Здравствуйте, kuj, Вы писали:


kuj>>Нет, Process Explorer показал тебе размер workset`а. Заканчивай ламерствовать, хаттабчик. ;]

CC>Сам заканчивай ламерить!
CC>Тыб хоть раз посмотрел что для .NET процесса можно увидеть в ProceXP.
CC>Особенно на закладке .NET для .NET CLR Memory.

CC>Там вообще много интересных параметров.

CC>Например реалтайм счетчик Total Runtime Checks и разделы .NET CLR Interop, .NET CLR Jit

CC>Кроме того есть еще мегатул VMView, который тебе покажет раскладку по адресному пространству.


Я в курсе, но то, что видит хаттабчек есть working set. CC слив засчитан. ;]
Re[46]: Коробочные продукты на .NET (НЕ для программистов/ад
От: hattab  
Дата: 17.06.09 09:40
Оценка:
Здравствуйте, kuj, Вы писали:

kuj>>>Нет, Process Explorer показал тебе размер workset`а. Заканчивай ламерствовать, хаттабчик. ;]

CC>>Сам заканчивай ламерить!
CC>>Тыб хоть раз посмотрел что для .NET процесса можно увидеть в ProceXP.
CC>>Особенно на закладке .NET для .NET CLR Memory.

CC>>Там вообще много интересных параметров.

CC>>Например реалтайм счетчик Total Runtime Checks и разделы .NET CLR Interop, .NET CLR Jit

CC>>Кроме того есть еще мегатул VMView, который тебе покажет раскладку по адресному пространству.


kuj>Я в курсе, но то, что видит хаттабчек есть working set. CC слив засчитан. ;]


Re: Коробочные продукты на .NET (НЕ для программистов/админо
От: gloomy rocker Россия  
Дата: 17.06.09 09:48
Оценка:
Здравствуйте, Jack128, Вы писали:

J>Собственно такие существуют?? Желательно более менее распространенные, хотя бы от 50к пользователей.


Есть например шахматная оболочка Infinity Chess. Только относительно количества пользователей не знаю...
Скука — двигатель прогресса.
Re[46]: Коробочные продукты на .NET (НЕ для программистов/ад
От: CreatorCray  
Дата: 17.06.09 10:11
Оценка:
Здравствуйте, kuj, Вы писали:

kuj>Я в курсе, но то, что видит хаттабчек есть working set. CC слив засчитан. ;]

Он для альтернативно одаренных любителей слива специально вот тут пишет, какую память он смотрел: Re[42]: Коробочные продукты на .NET (НЕ для программистов/ад
Автор: hattab
Дата: 17.06.09
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[43]: Коробочные продукты на .NET (НЕ для программистов/ад
От: yuriylsh  
Дата: 17.06.09 13:57
Оценка:
Здравствуйте, hattab, Вы писали:

H>Здравствуйте, yuriylsh, Вы писали:


Y>>>>А можно глянуть на тест и узнать, как измерялся размер затраченной памяти?


H>>>Ты же видел синтетику с конкатенацией в цикле. Память по ProcessExplorer'у.


Y>>Там много какую память можно посмотреть. На какую ты смотрел?


H>Private Bytes


StringBuilder sb = new StringBuilder(30 * 1024 * 512, 30 * 1024 * 512);
sb.Append('a', 30 * 1024 * 512 /* char = 2 bytes */);


Peak private bytes: 48660 K (пустое приложение — 17984К)

где двойной оверхед...
Luck in life always exists in the form of an abstract class that cannot be instantiated directly and needs to be inherited by hard work and dedication.
Re[44]: Коробочные продукты на .NET (НЕ для программистов/ад
От: hattab  
Дата: 17.06.09 14:12
Оценка:
Здравствуйте, yuriylsh, Вы писали:

H>>Private Bytes


Y>
Y>StringBuilder sb = new StringBuilder(30 * 1024 * 512, 30 * 1024 * 512);
Y>sb.Append('a', 30 * 1024 * 512 /* char = 2 bytes */);
Y>


Y>Peak private bytes: 48660 K (пустое приложение — 17984К)


Y> где двойной оверхед...


Ну ты молодец, установил максимальную Capacity и мне еще такие вопросы задаешь Коли уж решил проверить, так и проверяй на синтетике которая была дана, а не изобретай свой вариант с ограничительными условиями.
Re[45]: Коробочные продукты на .NET (НЕ для программистов/ад
От: yuriylsh  
Дата: 17.06.09 14:45
Оценка:
Здравствуйте, hattab, Вы писали:

H>Здравствуйте, yuriylsh, Вы писали:


H>>>Private Bytes


Y>>
Y>>StringBuilder sb = new StringBuilder(30 * 1024 * 512, 30 * 1024 * 512);
Y>>sb.Append('a', 30 * 1024 * 512 /* char = 2 bytes */);
Y>>


Y>>Peak private bytes: 48660 K (пустое приложение — 17984К)


Y>> где двойной оверхед...


H>Ну ты молодец, установил максимальную Capacity и мне еще такие вопросы задаешь Коли уж решил проверить, так и проверяй на синтетике которая была дана, а не изобретай свой вариант с ограничительными условиями.


Условия были: размер 30 Мб и 2-й оверхед по памяти . Я тебе показал, что ты не прав (кстати, ты же проводил сравнение, да? покажи как ты задал массив чаров, с которым сравниваешь, без задания его максимального размера). Двойной оверхед по памяти не у StringBuilder'а, а у тебя .

Кстати, какой оверхед, как ты думаешь, будет в этом коде (для MS .Net Framework 3.5 или ниже):
StringBuilder sb = new StringBuilder();
sb.Append('a'); // какой здесь оверхед?
sb.Append('a', 15); // а вот здесь?
sb.Append('a'); // а как насчет здесь?
Luck in life always exists in the form of an abstract class that cannot be instantiated directly and needs to be inherited by hard work and dedication.
Re[46]: Коробочные продукты на .NET (НЕ для программистов/ад
От: hattab  
Дата: 17.06.09 15:23
Оценка: -1 :)
Здравствуйте, yuriylsh, Вы писали:

Y>>>
Y>>>StringBuilder sb = new StringBuilder(30 * 1024 * 512, 30 * 1024 * 512);
Y>>>sb.Append('a', 30 * 1024 * 512 /* char = 2 bytes */);
Y>>>


Y>>>Peak private bytes: 48660 K (пустое приложение — 17984К)


Y>>> где двойной оверхед...


H>>Ну ты молодец, установил максимальную Capacity и мне еще такие вопросы задаешь Коли уж решил проверить, так и проверяй на синтетике которая была дана, а не изобретай свой вариант с ограничительными условиями.


Y>Условия были: размер 30 Мб и 2-й оверхед по памяти. Я тебе показал, что ты не прав (кстати, ты же проводил сравнение, да? покажи как ты задал массив чаров, с которым сравниваешь, без задания его максимального размера). Двойной оверхед по памяти не у StringBuilder'а, а у тебя.


Мде... Вот тут
Автор: hattab
Дата: 15.06.09
, я спрашиваю, как в StringBuilder'е может быть массив чаров, когда я вижу двукратный оверхед (в контекстве перетираемой синтетики). Вот тут
Автор: WFrag
Дата: 15.06.09
, мне намекают на Capacity (я догадываюсь, что там преаллокация в полный рост). Вот тут
Автор: hattab
Дата: 15.06.09
я поясняю причину своего недоумения. Стоило почитать, прежде чем начинать мне что-то доказывать

Y>Кстати, какой оверхед, как ты думаешь, будет в этом коде (для MS .Net Framework 3.5 или ниже):

Y>
Y>StringBuilder sb = new StringBuilder();
Y>sb.Append('a'); // какой здесь оверхед?
Y>sb.Append('a', 15); // а вот здесь?
Y>sb.Append('a'); // а как насчет здесь?
Y>


хз. Я тебе другой покажу. Дана обсуждаемая синтетика от criosray (ReadLine'ы вставил я, это будут контрольные точки):

using System;
using System.Diagnostics;
using System.Text;

class _
{
 static void Main(string[] args)
 {
            var stopwatch = new Stopwatch();

            stopwatch.Start();
            var stringBuilder = new StringBuilder();

            for (int i = 0; i < 10000000; i++)
            {
                stringBuilder.Append("c1");
            }
            stopwatch.Stop();
            Console.WriteLine("append: elapsed {0}", stopwatch.Elapsed);
            Console.WriteLine(stringBuilder.Length);
        Console.ReadLine(); // первая контрольная точка

            stopwatch.Start();
            stringBuilder.Replace("c1", "abc4");
            stopwatch.Stop();
            Console.WriteLine("replace: elapsed {0}", stopwatch.Elapsed);
            Console.WriteLine(stringBuilder.Length);
        Console.ReadLine(); // вторая контрольная точка

 }
}


Первая контрольная точка: размер строки — 38.14Mb, Private Bytes — 111.1Mb
Вторая контрольная точка: размер строки — 76.29Mb, Private Bytes — 145.3Mb
(в процессе работы метода Replace, Private Bytes держались на уровне 252.1Mb)
Re[47]: Коробочные продукты на .NET (НЕ для программистов/ад
От: yuriylsh  
Дата: 17.06.09 15:46
Оценка: +1
Здравствуйте, hattab, Вы писали:

H>Мде... Вот тут
Автор: hattab
Дата: 15.06.09
, я спрашиваю, как в StringBuilder'е может быть массив чаров, когда я вижу двукратный оверхед (в контекстве перетираемой синтетики). Вот тут
Автор: WFrag
Дата: 15.06.09
, мне намекают на Capacity (я догадываюсь, что там преаллокация в полный рост). Вот тут
Автор: hattab
Дата: 15.06.09
я поясняю причину своего недоумения. Стоило почитать, прежде чем начинать мне что-то доказывать


Я читал. Я тебе доказываю, что двойной оверхед по памяти — это бред. Смотри ниже.

Y>>Кстати, какой оверхед, как ты думаешь, будет в этом коде (для MS .Net Framework 3.5 или ниже):

Y>>
Y>>StringBuilder sb = new StringBuilder();
Y>>sb.Append('a'); // вот здесь оверхед в 16 раз
Y>>sb.Append('a', 15); // а здесь нет оверхеда
Y>>sb.Append('a'); // вот здесь почти 2 раза
Y>>


H>хз.


Вот именно. И твое утвержедение про 2-й оверхед — это тоже хз что (смотри коменты в коде).

H>Я тебе другой покажу. Дана обсуждаемая синтетика от criosray (ReadLine'ы вставил я, это будут контрольные точки)


И? Что тест мерял? А ты что меряешь?
Luck in life always exists in the form of an abstract class that cannot be instantiated directly and needs to be inherited by hard work and dedication.
Re[48]: Коробочные продукты на .NET (НЕ для программистов/ад
От: hattab  
Дата: 17.06.09 17:36
Оценка: -2
Здравствуйте, yuriylsh, Вы писали:

H>>Мде... Вот тут
Автор: hattab
Дата: 15.06.09
, я спрашиваю, как в StringBuilder'е может быть массив чаров, когда я вижу двукратный оверхед (в контекстве перетираемой синтетики). Вот тут
Автор: WFrag
Дата: 15.06.09
, мне намекают на Capacity (я догадываюсь, что там преаллокация в полный рост). Вот тут
Автор: hattab
Дата: 15.06.09
я поясняю причину своего недоумения. Стоило почитать, прежде чем начинать мне что-то доказывать


Y>Я читал. Я тебе доказываю, что двойной оверхед по памяти — это бред. Смотри ниже.


Сомневаюсь, что ты читал, иначе не стал бы мне рассказывать про отсутствующий 2x-оверхед, ибо я написал, что после ildasm'а, магии не обнаружил, а значит таки да -- массив чаров.

Y>>>Кстати, какой оверхед, как ты думаешь, будет в этом коде (для MS .Net Framework 3.5 или ниже):

Y>>>
Y>>>StringBuilder sb = new StringBuilder();
Y>>>sb.Append('a'); // вот здесь оверхед в 16 раз
Y>>>sb.Append('a', 15); // а здесь нет оверхеда
Y>>>sb.Append('a'); // вот здесь почти 2 раза
Y>>>


H>>хз.


Y>Вот именно. И твое утвержедение про 2-й оверхед — это тоже хз что (смотри коменты в коде).


А чего ты ждал, что я полезу в MSDN читать, каким умолчательным размером устанавливается внутренний буфер? У меня же лучше пример был

H>>Я тебе другой покажу. Дана обсуждаемая синтетика от criosray (ReadLine'ы вставил я, это будут контрольные точки)


Y>И? Что тест мерял? А ты что меряешь?


Во-первых, я ничего не меряю. Речь об оверхеде это просто констатация фактов (более того, выраженная в форме вопроса!). Во-вторых, ярым защитникам .NET, стоит внимательнее читать и пытаться вникать в суть моих постингов, даже если они наносят нестерпимую боль их ранимым душам.
Re[49]: Коробочные продукты на .NET (НЕ для программистов/ад
От: yuriylsh  
Дата: 17.06.09 20:39
Оценка:
Здравствуйте, hattab, Вы писали:

H>Здравствуйте, yuriylsh, Вы писали:


H>>>Мде... Вот тут
Автор: hattab
Дата: 15.06.09
, я спрашиваю, как в StringBuilder'е может быть массив чаров, когда я вижу двукратный оверхед (в контекстве перетираемой синтетики). Вот тут
Автор: WFrag
Дата: 15.06.09
, мне намекают на Capacity (я догадываюсь, что там преаллокация в полный рост). Вот тут
Автор: hattab
Дата: 15.06.09
я поясняю причину своего недоумения. Стоило почитать, прежде чем начинать мне что-то доказывать


Y>>Я читал. Я тебе доказываю, что двойной оверхед по памяти — это бред. Смотри ниже.


H>Сомневаюсь, что ты читал, иначе не стал бы мне рассказывать про отсутствующий 2x-оверхед, ибо я написал, что после ildasm'а, магии не обнаружил, а значит таки да -- массив чаров.


Тут ты прав, извиняюсь, не заметил, что ты вроде понял, в чем дело. Что, впрочем, тебе не помешало привести аналогичный "аргумент" в предидущем посте

Y>>Вот именно. И твое утвержедение про 2-й оверхед — это тоже хз что (смотри коменты в коде).


H>А чего ты ждал, что я полезу в MSDN читать, каким умолчательным размером устанавливается внутренний буфер? У меня же лучше пример был


Правильно! Учение — свет, а темнота — друг молодежи

H>>>Я тебе другой покажу. Дана обсуждаемая синтетика от criosray (ReadLine'ы вставил я, это будут контрольные точки)


Y>>И? Что тест мерял? А ты что меряешь?


H>Во-первых, я ничего не меряю. Речь об оверхеде это просто констатация фактов (более того, выраженная в форме вопроса!). Во-вторых, ярым защитникам .NET, стоит внимательнее читать и пытаться вникать в суть моих постингов, даже если они наносят нестерпимую боль их ранимым душам.


А минус вот за это.
Luck in life always exists in the form of an abstract class that cannot be instantiated directly and needs to be inherited by hard work and dedication.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.