|
|
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Dima TAdx, я тебя понять не могу к чему ты все адресованное мне написал. У нас с Зимарглом было обсуждение проблемы подкачки с диска (заметь мы друг-друга поняли), а тут ты со своими постами в какую-то другую сторону, я честно не понимаю к чему ты это все написал. Давай проще, начни с конца: пиши сразу к чему ты ведешь, что доказываешь, что я по твоему не понимаю. А я тебе отвечу так оно или нет. Без проблем. Вы оба исходите по некоторым вопросам из неверных предположений. Я пытался это объяснить. 1) Простое приложение на .NET грузит диск (эта самая подкачка) ничуть не больше чем написанное на C++ безо всякого .NET Независимо от размера всего фреймворка. 2) В .NET есть много механизмов загрузки сборок. Можно загрузить ее в память сразу, и потом уже не происходит обращения к диску. 3) Ошибки страниц не стопроцентный показатель, зависит от приложения. 4) Насчет кэширования Вы писали, замечу только, что своппинг генерит ошибки страниц со страшной силой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 14:17 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
ЗимарглТам есть исходный код. Бери, компилируй с разными ключами. Смотри код. Я собственно, потому результаты и не стал выкладывать, что у каждого они будут немного свои. ... Ты не тот скорее всего параметр смотришь. Минимальный футпринт дНет приложения занимает примерно 10Мб в памяти. Я думал, для C# тоже есть. У меня 5 mb. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 14:26 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
ЗимарглDima T.... Запустил свою поделку консольную на C# - 1,4 Мб. ... Опять же все зависит о задачи. Насколько критично сэкономить 10-100 Мб ОЗУ, фремворк это ж не только занимание памяти, но и облегчение и ускорение разработки. ... Ты не тот скорее всего параметр смотришь. Минимальный футпринт дНет приложения занимает примерно 10Мб в памяти. Я писал выше, что смотреть в диспетчере задач. Как понимаю речь об этом Зимарглmayton... - Прошу вас написать краткую инструкцию по замеру футпринта. Я сходу не смогу придумать адекватный и _воспроизводимый_ академический метод. Когда смотрел для себя - просто засекал дельту свободной памяти при выгрузке отработавшего приложения. В Win7 Это совпадает с показателем "Память - Рабочий набор". Объем же фреймворка, подлинкованного но не загруженного можно увидеть в "Память - выделенная память". Но боюсь, для языков с широкм использованием динамического связывания это не годится. Смотрю на свою программулину (вообще она для поиска одинаковых файлов на диске, но без параметров просто выдает справку о командной строке и висит ждет нажатия на кнопку) Рабочий набор 6,7 Мб Выделенная память 4,8 Мб Частный рабочий набор 1,4 Мб читаем хэлп что это означаетПамять - рабочий набор Объем памяти в частном рабочем наборе плюс объем памяти, используемой процессом, которую нельзя использовать совместно с другими процессами. Память - пик рабочего набора Максимальный объем памяти рабочего набора, использованный процессом. Память - дельта рабочего набора Изменение объема памяти рабочего набора, используемой процессом. Память - частный рабочий набор Частный рабочий набор показывает конкретный объем используемой процессом памяти, который данный процесс не может использовать совместно с другими процессами. Память - выделенная память Объем виртуальной памяти, выделенной процессу. Память - выгружаемый пул Объем страничной виртуальной памяти ядра, выделенной ядром или драйверами процессу. Страничная виртуальная память - это память, которую можно переписать на другой носитель, например жесткий диск. Память - невыгружаемый пул Объем невыгружаемой памяти ядра, выделенной ядром или драйверами процессу. Невыгружаемая память - это память, которую нельзя переписать на другой носитель. Мутно немного написано, но куда надо смотреть зависит от задачи. Например 1. у нас одна копия проги то заняли Рабочий набор, т.е. там и данные и код проги, и фрэймворк. 2. у нас N процессов одной и той же проги, то займет она Рабочий набор + (N - 1) * Частный рабочий набор. 3. у нас N разных прог, но на одном фрэймворке, фрэймворк в реальной памяти тоже будет однократно размещен, поэтому будет как в п.2 плюс размер самих прог (без фрэймворка) ЗимарглНасколько критично 50Мб Озу на процесс вебсервера можешь посмотреть в статье про multitenant JVM выше по топику. По сути это п.2. т.е. фрэймворк реальную память займет один раз. Другой вопрос сколько займет каждый процесс во время работы, но это уже не только от фрэймворка зависит, но и от кривизны рук разработчика. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 14:56 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Я встречал конфигурации когда на 1 хосте запускают 2 JBoss в балансере. На обоих одно и то-же приложение. Не в кластере но взаимодействующе с общим пулом БД. Таким образом админы на стороне заказчика подстраховывались от внезапных падений. У них был демон который периодически ходил на http порт и вытягивал ответ и анализировал отклик. Если отклик превышал 3-5 секунд то демон давал kill + ребут для экземпляра jboss который подвис. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 15:27 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
AdxDima TAdx, я тебя понять не могу к чему ты все адресованное мне написал. У нас с Зимарглом было обсуждение проблемы подкачки с диска (заметь мы друг-друга поняли), а тут ты со своими постами в какую-то другую сторону, я честно не понимаю к чему ты это все написал. Давай проще, начни с конца: пиши сразу к чему ты ведешь, что доказываешь, что я по твоему не понимаю. А я тебе отвечу так оно или нет. Без проблем. Вы оба исходите по некоторым вопросам из неверных предположений. Я пытался это объяснить. 1) Простое приложение на .NET грузит диск (эта самая подкачка) ничуть не больше чем написанное на C++ безо всякого .NET Независимо от размера всего фреймворка. 2) В .NET есть много механизмов загрузки сборок. Можно загрузить ее в память сразу, и потом уже не происходит обращения к диску. 3) Ошибки страниц не стопроцентный показатель, зависит от приложения. 4) Насчет кэширования Вы писали, замечу только, что своппинг генерит ошибки страниц со страшной силой. 1. Согласен. Обратного не утверждал. 2. Согласен. Обратного не утверждал. 3. У тебя просто недопонимание как все устроено, почитай книжку про устройство виртуальной памяти, адресное пространство процесса и т.п. Пример (кратко): процесс А спроецировал в свое адресное пространство файл (пофиг какой EXE, DLL, TXT), затем произошло обращение к первому байту (пофиг как: данные прочитать или код там выполнить) происходит исключение, менеджер памяти его перехватывает, читает с диска первые 4 кб файла в реальную память (вот она страница), подставляет эту реальную память просессу и возвращает управление проге, прога дальше работает. Запускается прога Б, проецирует этот же файл, обращается к первому байту, происходит исключение, счетчик ошибок страниц увеличивается, но менеджер памяти видит что эта страница уже есть в реальной памяти, поэтому он НЕ читает с диска, он просто подсовывает ее в процесс Б. Т.е. два процесса А и Б реально используют одни и теже 4 кб реальной памяти. 4. Свопинг это результат ошибок страниц, т.е. когда данных/кода нет в памяти они читаются с диска. Кроме того есть еще запись в своп для освобождения памяти. Читай книжку :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 15:28 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Cpt. GrayРоберту нужно было в начале предложения добавить "ИМХО" Говорить, что Джава "слабее, из-за того, что в ней нет множественного наследования, указателей и шаблонов как-то уж очень холли варно.. "У пистолета Макарова нет автоматического режима огня, оптического прицела и патрона, позволяющего поражать цели на значительном удалении. Поэтому по мощи и универсальности он уступает автомату". Не вижу в этой фразе ничего холиварного, просто констатация факта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 15:47 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
AdxБез проблем. Вы оба исходите по некоторым вопросам из неверных предположений. Я пытался это объяснить. 1) Простое приложение на .NET грузит диск (эта самая подкачка) ничуть не больше чем написанное на C++ безо всякого .NET Независимо от размера всего фреймворка. Докажи. Я предъявлял ошибки страниц при использования интерфейса. И их гораздо больше в дНет программе, чем в написанной С++ и даже на Яве. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 16:02 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Dima T, У Вас некоторая путаница. Вы пишите что происходит при загрузке файла в определенной ситуации. А потом обобщаете это на все понятие "ошибки страниц". И все это завязывается на загрузку приложения и набор его DLL (сборок, которые можно грузить по-разному и в разное время). С механизмом загрузки файла я не спорю, не нужно меня в этом убеждать. Ладно, тема не об этом. Основное - это первые два пункта. Если тут спора нет, то значит эти вопросы не к Вам ) softwarer"У пистолета Макарова нет автоматического режима огня, оптического прицела и патрона, позволяющего поражать цели на значительном удалении. Поэтому по мощи и универсальности он уступает автомату". Не вижу в этой фразе ничего холиварного, просто констатация факта. Не согласен. Автомат не подходит для скрытого ношения, занимает много места, мощность патрона избыточна во многих ситуациях (рикошеты и пули на излете). Где универсальность? ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 16:05 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
AdxНе согласен. Автомат не подходит для скрытого ношения, занимает много места, мощность патрона избыточна во многих ситуациях (рикошеты и пули на излете). Где универсальность? ) Представьте себе список различных возможных ситуаций и галочки "пистолет подходит - не подходит", "автомат подходит - не подходит". Универсальность в количестве галочек. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 16:09 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
ЗимарглAdxБез проблем. Вы оба исходите по некоторым вопросам из неверных предположений. Я пытался это объяснить. 1) Простое приложение на .NET грузит диск (эта самая подкачка) ничуть не больше чем написанное на C++ безо всякого .NET Независимо от размера всего фреймворка. Докажи. Я предъявлял ошибки страниц при использования интерфейса. И их гораздо больше в дНет программе, чем в написанной С++ и даже на Яве. Какого интерфейса? Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Вот код. Посчитай ошибки страниц. Консольное приложение под .NET, VS 2013, сборок в references нет. Убираем отладку и ставим оптимизацию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 16:14 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Dima T2. у нас N процессов одной и той же проги, то займет она Рабочий набор + (N - 1) * Частный рабочий набор. Затестил. Подтверждается моя теория. Text.exeWin 32 без консоли .Net 4.0 Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. Рабочий набор 6,1 Мб Выделенная память 4,8 Мб Частный рабочий набор 1,4 Мб Запустил 100 процессов, наблюдал в диспетчере параметр "Физическая память (Мб) всего свободно". Для 100 процессов уменьшилось на 162-166 Мб. Т.е. ~1,6 Мб на процесс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 16:19 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
ЗимарглДокажи. Я предъявлял ошибки страниц при использования интерфейса. И их гораздо больше в дНет программе, чем в написанной С++ и даже на Яве. Тот же тест 18100590 каждый из 100 процессов показывает 1500 ошибок страниц, но это не означает 150000 обращений к диску. Выше писал Dima TПример (кратко): процесс А спроецировал в свое адресное пространство файл (пофиг какой EXE, DLL, TXT), затем произошло обращение к первому байту (пофиг как: данные прочитать или код там выполнить) происходит исключение, менеджер памяти его перехватывает, читает с диска первые 4 кб файла в реальную память (вот она страница), подставляет эту реальную память просессу и возвращает управление проге, прога дальше работает. Запускается прога Б, проецирует этот же файл, обращается к первому байту, происходит исключение, счетчик ошибок страниц увеличивается, но менеджер памяти видит что эта страница уже есть в реальной памяти, поэтому он НЕ читает с диска, он просто подсовывает ее в процесс Б. Т.е. два процесса А и Б реально используют одни и теже 4 кб реальной памяти. Я к тому что ты некорректно трактуешь значение "ошибки страниц". По твоему 1 ошибка = 1 чтение с диска. Это не так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 16:34 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Тот же тест на С Test.exeWin 32 без консоли Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Рабочий набор 2,0 Мб Выделенная память 0,6 Мб Частный рабочий набор 0,5 Мб Ошибок страниц 533 Запустил 100 процессов, наблюдал в диспетчере параметр "Физическая память (Мб) всего свободно". Для 100 процессов уменьшилось на 48-52 Мб. Т.е. ~0,5 Мб на процесс. Как бы не намного разница: .Net занял на 1 Мб больше. Что касается ошибок страниц, так они точно сответствуют формуле Рабочий набор*256, т.к. 1 Мб = 256 страниц. Т.е. в данном случае это просто показатель сколько используется страниц в виртуальном адресном пространстве данного процесса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 16:53 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Коллеги. Я думаю что нам стоит пока отложить замер "ошибок страниц". Я имею в виду в отношении бенчмаркок С++/Java/dNet/Python. Бох весть еще какие цифры у нас полезут в Linux окружении. Это путает карты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 16:56 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Dima TРабочий набор 6,1 Мб Выделенная память 4,8 Мб Частный рабочий набор 1,4 Мб У меня этот же код: Рабочий набор 5,3 Мб Выделенная память 4,4 Мб Частный рабочий набор 1,1 Мб Все, прекращаю оффтопить ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 17:08 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Надо какой-то тест изобрести, близкий к реальности, но не очень тривиальный. Линуксы предлагаю пока в стороне оставить. Вариант теста: сгенерить текстовый файлик с иерархическим списком но в разнобой, затем отсортировать, сохранить в другой файл. типа23.44.1. опдлываопдл 1.2. павлыопыавлопж ... формат строки: X.X....X.{пробел}текст где X 1-2 знака. Количество Х-ов до 5. Общая длина строки до 100 байт. Замеряем: 1. Время на загрузку 2. Время на сортировку 3. Время на сохранение Размер исходного файла подобрать чтобы 5-10 сек молотило. Могу генератор написать чтоб файлик у всех одинаковый был. Тогда результат на корректность можно будет по CRC проверить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 17:11 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
AdxУ меня этот же код ... Объяснимо: у меня VS2010 у тебя вроде 2013 (если не путаю). .Net соответственно 4.0 и 4.5. Значит MS не сидит сложа руки, допиливает и что приятно - в нужную сторону :) AdxВсе, прекращаю оффтопить ) Присоединяюсь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 17:18 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
softwarerПоэтому по мощи и универсальности он уступает автоматуУниверсальность автомата заканчивается на "личное оружие ближнего боя". Тоже констатация факта, но обе - бессмысленные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 18:39 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
maytonКоллеги. Я думаю что нам стоит пока отложить замер "ошибок страниц". Я имею в виду в отношении бенчмаркок С++/Java/dNet/Python. Бох весть еще какие цифры у нас полезут в Linux окружении. Это путает карты. Это отдельный тест. В Линухе существенное отличие на переключение контекста и мютексы всякие. На вычислительном тесте это не видно. Dima T, нужно больше использования фреймворка, а не простых операций. Можно взять создание 100 экз какого нибудь одинакового окна с кнопочками. Или еще какого объекта, который в иерархии классов фреймворка имеет много предков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 18:49 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Зимаргл, Сравнивать визуальные оболочки, написанные на разных системах/языках, абсурдно. Я под С++ и C# напишу десяток разных интерфейсов с разными характеристиками. Сравнивать нужно одинаковый код, насколько это возможно, конечно. И уж визуальные библиотеки подходят для этого меньше всего. А то давайте тогда сравним MS Paint и Adobe Photoshop по памяти и скорости загрузки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 19:08 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
В данном топике мы обсуждали принципиальную возможность описать и закодить любой алгоритм на языке-платформере в т.ч. и тайм-критичные алгоритмы. Типа DOSBox, или игры Doom. Гонять бенчмарки для этого необязательно ИМХО но некоторые мемберы имеют свои сомнения и опасения. Кстати нам неизбежно придётся коснуться таких аспектов как пропускная способность и скорость отклика. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 19:22 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
ЗимарглDima T, нужно больше использования фреймворка, а не простых операций. Согласен. Тест синтетический. Но он показывает умение конкретного фрэймворка подстроиться под написаный на нем код. Но это второстепенно, даже третьестепенно. Главная задача фрэймворка увязать возможности нижнего уровня (С, Асм) с простотой написания кода. Яркий пример FoxPro, на котором я и пишу восновном, подобный тест даже не буду выкладывать, проиграет по всем параметрам. Но на фоксе можно легко делать такие вещи, которые вызовут глубокую зависть конкурентов. Недавно демонстрировали мою поделку одной достаточно большой компании, сбежался весь ИТ-отдел, смотрел и утверждал что такое невозможно. Вроде элементарные вещи показывали когда по слову " О брикос" находит все "Абрикосы". Любой гугл это умеет. А это просто помесь фокса и Си в правильных пропорциях :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 19:57 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
А если я введу "Абрамс" - найдет "Абрикос" ? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 20:01 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
maytonА если я введу "Абрамс" - найдет "Абрикос" ? :) Нет. Количество ошибок ограничено. Читай про расстояние Левенштейна. Хотя ты и так знаешь не читая :) Следующий шаг - использовать релевантность. ЗЫ Правда получилось что "желтый" ~= "белый" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 20:10 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Dima TВроде элементарные вещи показывали когда по слову " О брикос" находит все "Абрикосы". "Вспомним молодость" ... В середине 90-х в одной из организаций в шкафах "бухгалтеров" была тьма толстых подшивок с данными по основным фондам /газопроводы/. Так как данных была "тьма", то ни кто даже помыслить не смел, чтобы все это "богатство" можно было ввести в компьютер и тем более /о чудо/ он будет давать верные цифры. Но один амбициозный /был грех/ молодой парень сказал - "Хотите через 2 месяца у вас весь архив будет в компьютере и получать все желаемые вам отчеты в любых разрезах". Так как организация видела мои предыдущие работы, то они согласились на подписание договора ... А теперь самое интересное. Нужно было ввести не мало символьных данных /наименование улиц, тип, длина, ... труб ... ... Что сделал. Разработал на Foxpro алгоритм, который "на лету" пополнял базу введенных слов ... Так вот для ввода строки выше мне достаточно было ввести "ррбтл на Fpo агтм ктрй "на лту" плнл бзу ввх сов ...". Остальное на автомате находилось в базе слов и разворачивал в фразу "Разработал на Foxpro алгоритм, который "на лету" пополнял базу введенных слов ..." Были и еще трюки ... PS: "Теперь вы понимаете как мне в таких условиях легко работалось". Через два месяца заказчик и исполнитель поучили какдый то чего хотел ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 20:35 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=39041621&tid=1340912]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
167ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
64ms |
get tp. blocked users: |
1ms |
| others: | 215ms |
| total: | 488ms |

| 0 / 0 |
