Re[21]: macro и micro memory management. Java и С
От: Sinclair Россия https://github.com/evilguest/
Дата: 16.12.05 03:52
Оценка:
Здравствуйте, McSeem2, Вы писали:
MS>Ладно, здесь я действительно мало чего знаю. Но вот какая штука — мне почему-то эти знания представляются неким ненужным мусором для моей работы — это то, что отнимает время, забиват голову и не дает ни малешего кайфа.
Опять же, надо отличать "не хочу знать" от "непонятно". Пока что твои жалобы выглядят, мягко говоря, неубедительно. Что, программа на С++ волшебно нашла бы файл, не лежащий рядом с ее екзешником? Студия кладет результат в bin/debug уже как минимум четыре версии, так что вряд ли ты не знал, что исполняемый файл запустится не в фолдере проекта.
Или Image.FromFile() прямо так невозможно найти, с учетом интеллисенса и документации? В жизни не поверю, что в повседневном программировании ты не пользуешься F1.

И на основании этого ты заявляешь, что в дотнете присутствует бесталанность, и на выяснение всего уходит масса времени. Я очень удивлен.
1.1.4 stable rev. 510
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[20]: macro и micro memory management. Java и С
От: McSeem2 США http://www.antigrain.com
Дата: 16.12.05 03:55
Оценка:
Здравствуйте, vdimas, Вы писали:

V>У Pen есть такая фигня как:

V>public void RotateTransform(float angle)

V>или более общий вариант:

V>System.Drawing.Pen.MultiplyTransform(System.Drawing.Drawing2D.Matrix, System.Drawing.Drawing2D.MatrixOrder)

V>Как раз для твоего случая сгиба рукава и полосочек


Толку от этого нет. Надо что-то типа:
Pen.RotateToTangentOfEachLineSegment() — без параметров!
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Re[23]: macro и micro memory management. Java и С
От: n0name2  
Дата: 16.12.05 08:01
Оценка:
Здравствуйте, vdimas, Вы писали:

V>NHibernate — далеко не самый удобный ORM-Tool, и далеко не самый производительный. Остает от датасетов более чем в 2 раза, в то время как RFD не отстает или даже иногда обгоняет. При чем у RFD есть потенциал выжать еще примерно 30%, и я даже знаю где (предлагал как-то типизированные ридеры для исключения боксинга простых типов)


думаю, это особенности портирования NHibernate на .НЕТ или того что ты им неправильно пользуешься (настроек там много разных)... у RFD вообще нет и 10% тех возможностей которые есть в нормальном Жабном Hibernate.

V>Далее. Из опыта собственной системы. На момент разработки ГОРАЗДО удобнее всякие ограничения/характеристики/маппинг полей описывать в виде аттрибутов прямо в коде. Почему — из-за частого рефакторинга. У нас по-любому аттрибуты остаются привязанными к конкретным полям и классам. А попробуй повторить тот же трюк с NHibernate с его внешним XML-описанием...

V>Однако, ближе к релизу гораздо удобней внутреннее описание перевести во внешнее, т.к. такой способ лучше сопровождаем.

Hibernate уже давно имеет и то и другое — на любой вкус. кстати в ИДЕЕ действительно очень мощный XML редактор.
Re[22]: macro и micro memory management. Java и С
От: McSeem2 США http://www.antigrain.com
Дата: 16.12.05 15:04
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Опять же, надо отличать "не хочу знать" от "непонятно". Пока что твои жалобы выглядят, мягко говоря, неубедительно. Что, программа на С++ волшебно нашла бы файл, не лежащий рядом с ее екзешником? Студия кладет результат в bin/debug уже как минимум четыре версии, так что вряд ли ты не знал, что исполняемый файл запустится не в фолдере проекта.


Вообще-то, результаты кладутся в Debug или Relese с допотопных времен. И тем не менее, при запуске из IDE такущий каталог указывает на каталог проекта (они явно делают cd). Это было вполне логично. Зачем понадобилось менять — не понятно.

S>Или Image.FromFile() прямо так невозможно найти, с учетом интеллисенса и документации? В жизни не поверю, что в повседневном программировании ты не пользуешься F1.


Почти не пользуюсь. Если что-то надо, то Google, поскольку в MS Help'e фиг чего найдешь. Это же смешно — идем в MSDN, и не находим того, что надо (релевантность поика около нуля). Гугл как правило дает первую же ссылку куда надо.
Что же касается Image.FromFile() то сейчас опять посмотрел — нету. Причем Save — есть. Потом понял, что не так смотрел. Я-то по наивности думал как: Image img = new Image(); img.FromFile(. . .); А оказалось что метод статический! А у класса Bitmap — есть и Load и Save как члены класса. А у Image — "Load" называется "FromFile" и является статической функцией. Где логика? А еще ты что-то упоминал про засаду с блокировками файлов из за запоздалых вызовов Dispose.

S>И на основании этого ты заявляешь, что в дотнете присутствует бесталанность, и на выяснение всего уходит масса времени. Я очень удивлен.


А вот получается так. Когда надо что-то сделать, берется самое очевидное, подходящее по смыслу название и оно не срабатывает! Кстати, в WinAPI — то же самое.
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Re[22]: macro и micro memory management. Java и С
От: VladD2 Российская Империя www.nemerle.org
Дата: 17.12.05 05:34
Оценка:
Здравствуйте, n0name2, Вы писали:

N>а я говорю о том что ЖЦ НЕ приберет в разумные сроки. когда он будет вызван будет уже слишком поздно. соот-но финалайзер совершенно бесполезен в данном случае и вообще практически везде.


Гы. Если я вызову GC.Collect(0), то все управляемые потоки сразу же остановят и произведут сборку нулевого поколения. До этого ни одна сволочь не сможет сделать не шагу в управляемом мире.

А псоле сборки у меня уже будет куча хэндлов. Ну, и не надо забывать то, что сказал Вольфхаунд. ЖЦ — это подстраховка. В грамотном коде 99% будет висеть на using-ах и ЖЦ вообще не потребуется задействовать.

Скорость же сборки мусора в нулевом поколении очень высокая (несколько микросекунд). Причем чем чаще вызваешь, тем бысрее работает. Одна проблема некоторые объкты могут нечаяно протолкнуться в вледующее поколение и прийдется делать более накладную сборку других поколений. Хотя первое поколение тоже довольно дешево.

N>да ну? это для какого дерева объектов? если их, скажем, 15млн (типичный случай, кстати), то все равно соберет все за 10мс? кстати, а в .НЕТ вообще можно посмотреть статистику и графики в рантайме о работе ЖЦ?


Нулевое поколение содержит только молодые объекты. К тому же его размер подстраивается под размер кэша, так что скорость его сборки — это даже не десятки милисекунд. Это микросекунды на современных компьютерах.

N> посмотри спеку Hibernate — вопросов больше не будет. все равно что сравнивать plain text file и MSSQL в качестве СУБД.


Это ты зря. Это разные подходы.

N>ну, как сказать... вообще-то commit() надо вызывать. даже если произошли некоторые типы exceptions.


Для забытых соеденений и соеденений при работе с которыми произошли исключения нужно не commit вызвать, а откат. Вот при возвращении в пул можно проверить состояние транзакции и откатить ее если она еще активна.
... << RSDN@Home 1.2.0 alpha rev. 620>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[21]: macro и micro memory management. Java и С
От: VladD2 Российская Империя www.nemerle.org
Дата: 17.12.05 05:34
Оценка:
Здравствуйте, McSeem2, Вы писали:

S>>Поработай с дотнетом — и будешь находить информацию еще и быстрее чем сейчас.


MS>Ладно, здесь я действительно мало чего знаю. Но вот какая штука — мне почему-то эти знания представляются неким ненужным мусором для моей работы — это то, что отнимает время, забиват голову и не дает ни малешего кайфа.


Э... Столько времени как в этом форуме у тебя ни один дотнет не отнимет. Так что это явно натянутый аргумент.

Что до трудности получения знаний, то надо признаться, что ты лихо портировал код с FW 2.0 на 1.1 и еще разобрался как картинку с диска загрузить. Думаю, что если бы ты имел бы подобные познания в ВыньАПИ как в дотнете, то вряд ли тебе удалось бы вот так вот в лоб подобный пример переписать. Так что в этом плане все ОК.

ЗЫ

Ты вот попробуй написать простенькую программку показывающую текущий режим сглаживания шрифтов в ХРюше и позволяющую его переключить. Я тут как-то вынужден был сделать это через ВыньАПИ. Вот это был секс! Вспомнил, шо называется, молодость.
... << RSDN@Home 1.2.0 alpha rev. 620>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[23]: macro и micro memory management. Java и С
От: Cyberax Марс  
Дата: 17.12.05 12:41
Оценка:
VladD2 wrote:
> Гы. Если я вызову GC.Collect(0), то все управляемые потоки сразу же
> остановят и произведут сборку нулевого поколения. До этого ни одна
> сволочь не сможет сделать не шагу в управляемом мире.
Emphasis mine.

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re[21]: macro и micro memory management. Java и С
От: vdimas Россия  
Дата: 18.12.05 07:26
Оценка:
Здравствуйте, McSeem2, Вы писали:

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


V>>У Pen есть такая фигня как:

V>>public void RotateTransform(float angle)

V>>или более общий вариант:

V>>System.Drawing.Pen.MultiplyTransform(System.Drawing.Drawing2D.Matrix, System.Drawing.Drawing2D.MatrixOrder)

V>>Как раз для твоего случая сгиба рукава и полосочек


MS>Толку от этого нет. Надо что-то типа:

MS>Pen.RotateToTangentOfEachLineSegment() — без параметров!

Берешь шаг в 1, согласно раpрешению устройства (т.е. 1 пиксел, например), и рисуешь каждый раз линию на эту длину.
Re[22]: macro и micro memory management. Java и С
От: McSeem2 США http://www.antigrain.com
Дата: 18.12.05 16:00
Оценка: :)
Здравствуйте, vdimas, Вы писали:

V>Берешь шаг в 1, согласно раpрешению устройства (т.е. 1 пиксел, например), и рисуешь каждый раз линию на эту длину.


Ничего понял. Что надо сделать?
Как говорится, "Кто на ком стоял? Потрудитесь излагать ваши мысли яснее".
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Re[23]: macro и micro memory management. Java и С
От: Sinclair Россия https://github.com/evilguest/
Дата: 19.12.05 04:22
Оценка:
Здравствуйте, McSeem2, Вы писали:


MS>Почти не пользуюсь. Если что-то надо, то Google, поскольку в MS Help'e фиг чего найдешь. Это же смешно — идем в MSDN, и не находим того, что надо (релевантность поика около нуля).

Ну так никто и не говорил, что поисковый движок MSDN лучше, чем у Google. Зато по индексу они ищут намного быстрее.
MS>Гугл как правило дает первую же ссылку куда надо.
MS>Что же касается Image.FromFile() то сейчас опять посмотрел — нету. Причем Save — есть. Потом понял, что не так смотрел. Я-то по наивности думал как: Image img = new Image(); img.FromFile(. . .); А оказалось что метод статический!
Совершенно верно — не так смотрел. Надо было так:
— открываешь MSDN (у меня он вообще все время открыт)
— набираешь в индексе System.Drawing.Image
— переходишь в нижнем списке на System.Drawing.Image members
Все. Дальше пробегаешь глазами список мемберов и находишь FromFile. С пометкой S.
MS> А у класса Bitmap — есть и Load и Save как члены класса. А у Image — "Load" называется "FromFile" и является статической функцией. Где логика? А еще ты что-то упоминал про засаду с блокировками файлов из за запоздалых вызовов Dispose.

S>>И на основании этого ты заявляешь, что в дотнете присутствует бесталанность, и на выяснение всего уходит масса времени. Я очень удивлен.


MS>А вот получается так. Когда надо что-то сделать, берется самое очевидное, подходящее по смыслу название и оно не срабатывает! Кстати, в WinAPI — то же самое.

Гм. А что, где-то есть такие места, где все вообще очевидно?
1.1.4 stable rev. 510
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[5]: macro и micro memory management. Java и С
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 19.12.05 14:24
Оценка: +1
Здравствуйте, McSeem2, Вы писали:

WH>> public static void AddMemoryPressure(long bytesAllocated);


MS>Спасибо, но это не совсем то. Оно глобальное и работает только с памятью. А прочие ресурсы?


На самом деле чиселка bytesAllocated довольно абстрактная. В бета-версиях фреймворка писали, что это просто число, чем оно больше тем важнее быстрее его прибить. Использовать можно не только для больших кусков памяти, но и для любых дорогих ресурсов.
... << RSDN@Home 1.2.0 alpha rev. 624>>
AVK Blog
Re[7]: macro и micro memory management. Java и С
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 19.12.05 14:24
Оценка:
Здравствуйте, McSeem2, Вы писали:

MS>А там получается положительная обратная связь — надо вызвать AddMemoryPressure, чтобы GC перепугался и ринулся подметать. Тогда и деструктор вызовется. Наверное...


Тима скорее всего имел ввиду Dispose.
... << RSDN@Home 1.2.0 alpha rev. 624>>
AVK Blog
Re[14]: macro и micro memory management. Java и С
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 19.12.05 14:34
Оценка: +1
Здравствуйте, Andrei N.Sobchuck, Вы писали:

ANS>Для этого нужно чтобы вызов вышел из неуправляемой среды и вернулся назад. Имхо, в виду претензии управляемой среды на самодостаточность, чаще всё заканчивается на первом шаге.


Типичная ситуация — почти все GUI потоки в винде ввержу имеют DispatchMessage.
... << RSDN@Home 1.2.0 alpha rev. 624>>
AVK Blog
Re[24]: macro и micro memory management. Java и С
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.12.05 01:01
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>VladD2 wrote:

>> Гы. Если я вызову GC.Collect(0), то все управляемые потоки сразу же
>> остановят и произведут сборку нулевого поколения. До этого ни одна
>> сволочь не сможет сделать не шагу в управляемом мире.
C>Emphasis mine.

... << RSDN@Home 1.2.0 alpha rev. 620>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: macro и micro memory management. Java и С
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.12.05 01:17
Оценка:
Здравствуйте, AndrewVK, Вы писали:

MS>>А там получается положительная обратная связь — надо вызвать AddMemoryPressure, чтобы GC перепугался и ринулся подметать. Тогда и деструктор вызовется. Наверное...


AVK>Тима скорее всего имел ввиду Dispose.


Не, не. Диспоз бессмысленно. Тогда вообще зачем коворить ЖЦ о доп-памяти. Он имелл в виду финалйзер. Просто ТК у нас новичёк и не знает, что при плюсовиках лучше не говорить слово "деструктор" в отношении дотнета.
... << RSDN@Home 1.2.0 alpha rev. 620>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: macro и micro memory management. Java и С
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.12.05 01:35
Оценка:
Здравствуйте, Denis_TST, Вы писали:

D_T>А вот GDI+ точно троечники писали . Не понимаю почему 250 сглаженных линий толщиной 2px рисуются ~0.3 секунды.

D_T>AntiGrain делает это за 30 ms.

Думаю, они рассчитывали на то что эта операция будет осуществляться аппоратно. Ведь 30 мс — это тоже неприемлемо много.
... << RSDN@Home 1.2.0 alpha rev. 620>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[9]: macro и micro memory management. Java и С
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 20.12.05 05:27
Оценка:
Здравствуйте, VladD2, Вы писали:

AVK>>Тима скорее всего имел ввиду Dispose.


VD>Не, не. Диспоз бессмысленно.


Как раз очень осмысленно. Если программист ручками позвал диспоз до сборки мусора и в нем дорогие ресурсы были освобождены, то провоцировать преждевременную сборку мусора уже не нужно.
... << RSDN@Home 1.2.0 alpha rev. 624 on Windows XP 5.1.2600.131072>>
AVK Blog
Re[6]: macro и micro memory management. Java и С
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 20.12.05 09:09
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Это не так в случае классов, подобных обсуждаемому Brush, т.к. они содержат Finalize().


Но в этом случае и переиспользовать его до вызова Finalize нельзя.
... << RSDN@Home 1.2.0 alpha rev. 624>>
AVK Blog
Re[15]: macro и micro memory management. Java и С
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 20.12.05 11:24
Оценка:
Здравствуйте, AndrewVK, Вы писали:

ANS>>Для этого нужно чтобы вызов вышел из неуправляемой среды и вернулся назад. Имхо, в виду претензии управляемой среды на самодостаточность, чаще всё заканчивается на первом шаге.


AVK>Типичная ситуация — почти все GUI потоки в винде ввержу имеют DispatchMessage.


Ага. Согласен. Это единственный случай, или есть еще примеры?
Впрочем система с материализацией стека работает. Значит проблема решаемая.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[16]: macro и micro memory management. Java и С
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 20.12.05 11:39
Оценка:
Здравствуйте, Andrei N.Sobchuck, Вы писали:

AVK>>Типичная ситуация — почти все GUI потоки в винде ввержу имеют DispatchMessage.


ANS>Ага. Согласен. Это единственный случай, или есть еще примеры?


Есть еще — TCP-сервер например или ASP.NET приложение под IIS.
... << RSDN@Home 1.2.0 alpha rev. 624>>
AVK Blog
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.