WolfHound wrote: > C>Одно приложение для обработки и представления данных в двух версиях — > на C# и С++. > Информации 0. > Кстати а свободной памяти на машине сколько было? > Просто если памяти было много то ГЦ ее всю и утилизировал чтобы лишний > раз мусор не собирать.
Проблема в том, что сначала версию написали на C# — при больших объемах
данных памяти не хватало. Потом версию на C# пооптимизировали
слегка (воткнув val-типы), но памяти все равно постоянно не хватало.
В итоге написали в доке, что версия на C# должна использоваться на WinXP64.
В версии на С++, которая делала то же самое (с точностью до
пунктов меню) памяти требовалось примерно в три раза меньше.
Работали обе версии, кстати, с примерно одинаковой скоростью. C# в паре
тестов вырывался вперед, в целом C++ обычно был процентов на 10-20% быстрее.
> C>Ну так проценты имеют свойство накапливаться. > Куда накапливатся?
В расходуемую память
> C>В С++ от 0 до 4. > Для value типов тоже 0.
Перечислите ограничения для неbox-нутых val-типов.
> Короче кудабы они не бежали в разы всеравно не получается. За > исключением того случая когда на машине много свободной памяти...
"Свободной памяти" не существует — существует место для кэша диска.
Здравствуйте, Lloyd, Вы писали:
L>Здравствуйте, Вертер, Вы писали:
В>>так кто бы спорил, просто утверждается, что на дотНЕТ так всё просто, что ни о чём и думать то не надо — только полёт свободной мысли В>>Как пример: В>>
Варианты такие:
1. может быть дырка между адресами L_0000 и L_0005 так как команда ldstr не занимает 5 байт
2. может быть вместо stloc.0 должно быть stloc.1
WolfHound wrote: > C>Да, причем очень просто. Просто достаточно не делать циклические ссылки > Иногда для этого приходится думать очень очень много и городить такие > огороды что уж лучше был бы ГЦ. Уж точно проще и надежней и наверняка > оверхед меньше.
Я тоже так думал несколько лет назад Даже в ФИДО спорил по этому поводу.
Теперь я написал пару программ с нетривиальным сроком жизни объектов.
Время, потраченое на продумывание системы владения объектами,
многократно окупилось из-за улучшений архитекутуры, которые получились
из-за продумывания системы владения.
Программы, где без GC не обойтись, все же есть, но их не так уж и много.
Это разные компиляторы (где политики владения выделить сложно),
серверные системы (где надежнее использовать GC и плевать на несколько
процентов производительности).
Здравствуйте, Sheridan, Вы писали:
S>Угу, там четь, тут четь, здесь четь...
Фотошоп стартует раз в 10 медленней... выводы?
S>Это одно единственное преимущество дотнета. Но огромное!
Рад что ты это понимаешь. Теперь осталось понять что недостатки далеко не такие большие как ты их патаешься раздуть.
S>Вот именно что могут быть. Зависит от специфики задачи.
Вот только что-то очень часто мне такие задачи попадаются...
WH>>Руки... S>...ноги, голова, но только не дотнет...
Если написано на нете да еще и падает... то точно руки.
S>Странно, обычно дотнетчики обижаются. Респект за понимание.
А кто сказал что я дотнетчик?
Я в отличии от некоторых владею многими технологиями.
S>Проект стартовал и неспеша крутится.
Удачи.
WH>>Ну так на нем пишут в основном корпаративный софт и серверы. S>Бедные компании... Наверно с каждым релизом дотнета парк серверов обновляют...
Если так то очень глупые компании ибо каждый следующий релиз дотнета работает быстрее.
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, Cyberax, Вы писали:
C>Проблема в том, что сначала версию написали на C# — при больших объемах C>данных памяти не хватало. Потом версию на C# пооптимизировали C>слегка (воткнув val-типы), но памяти все равно постоянно не хватало.
А что за задача?
C>В итоге написали в доке, что версия на C# должна использоваться на WinXP64.
C>В версии на С++, которая делала то же самое (с точностью до C>пунктов меню) памяти требовалось примерно в три раза меньше.
Иначе чем алгоритмическими оптимизациями объяснить не могу. Или может у вас были миллиона мелких объектов и ручной менеджер памяти для С++?
C>Перечислите ограничения для неbox-нутых val-типов.
А какие именно тебе мешают?
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, WolfHound, Вы писали:
S>>Угу, там четь, тут четь, здесь четь... WH>Фотошоп стартует раз в 10 медленней... выводы?
Написать фотошоп на дотнете и затестить?
S>>Это одно единственное преимущество дотнета. Но огромное! WH>Рад что ты это понимаешь. Теперь осталось понять что недостатки далеко не такие большие как ты их патаешься раздуть.
Увы... Преимущество дотнета есть и остается в удобстве программирования. Даже поддержка уже прихрамывает... Тут fm1.1, там нужен 2.0...
S>>Вот именно что могут быть. Зависит от специфики задачи. WH>Вот только что-то очень часто мне такие задачи попадаются...
все может быть. Даже то что я неправ.
WH>>>Руки... S>>...ноги, голова, но только не дотнет... WH>Если написано на нете да еще и падает... то точно руки. если падает то да, а если тормозит?
S>>Странно, обычно дотнетчики обижаются. Респект за понимание. WH>А кто сказал что я дотнетчик? WH>Я в отличии от некоторых владею многими технологиями.
Это радует.
S>>Проект стартовал и неспеша крутится. WH>Удачи.
Спасибо...
WH>>>Ну так на нем пишут в основном корпаративный софт и серверы. S>>Бедные компании... Наверно с каждым релизом дотнета парк серверов обновляют... WH>Если так то очень глупые компании ибо каждый следующий релиз дотнета работает быстрее.
Ясное дело быстрее, железо то новое
[RSDN@Home][1.2.0][alpha][648]
[Hе всякому человеку даже гусарский мундир к лицу. [К. Прутков]]
Здравствуйте, Сергей, Вы писали:
С>Здравствуйте, WolfHound, Вы писали:
>>[...]
С>Вас послушать — так там совсем всё хорошо. Программировать под .net мне пока не доводилось, так что могу судить об этом только из разного рода литературы, мнений на форумах и опыта работы с такими приложениями.
Кстати задумался. Влад, какие ты мог бы предложить приложения на .Net для end-userа?
WolfHound wrote: > C>Проблема в том, что сначала версию написали на C# — при больших объемах > C>данных памяти *не хватало*. Потом версию на C# пооптимизировали > C>слегка (воткнув val-типы), но памяти все равно постоянно не хватало. > А что за задача?
Обработка данных профиля поверхности. Там сэмплы в 10000х10000 точек —
вполне нормальное явление.
> C>В версии на С++, которая делала *то же самое* (с точностью до > C>пунктов меню) памяти требовалось примерно в три раза меньше. > Иначе чем алгоритмическими оптимизациями объяснить не могу.
Оптимизаций там практически не было — я их код перелопачивал лично.
> Или может у вас были миллиона мелких объектов и ручной менеджер > памяти для С++?
Нет, были миллионы стековых объектов. Специальные менеджеры
использовались, но только для работы с несколькими большими (сотни
мегабайт) массивами.
> C>Перечислите ограничения для неbox-нутых val-типов. > А какие именно тебе мешают?
Нет эффективного способа передачи value-типов по ссылке. Ну и по мелочам
напрягала невозможность наследования и реализации интерфейсов (на
незабоксированых типах) — приходилось писать один и тот же код несколько
раз для разных типов.
Здравствуйте, WolfHound, Вы писали:
S>>Позволь, но тут я не соглашусь. Это программистам дешевле, а не пользователям. WH>А кто плавит программистам?
Директор и бухгалтерия .
На самом деле конечно все зависит от конторы.
Есть 4 типа контор...
1 — все шустренько ставится, работает, бесплатно но поддержки нет
2 — все ставится, работает, настраивается но поддержка слабая — софт в районе 0-100$
3 — с трудом ставится, настраивается припомощи техподдержки после 2х литров пива, потом работает — софт в районе 1000-5000$
4 — и софт с 7-8 тыщ нифига не ставится, не работает но за такие бабки техподдержка приедет, поставит, подключит и все будет работать.
Так вот, дотнет имхо это часто 3,4
[RSDN@Home][1.2.0][alpha][648]
[Быть добрым совсем нетрудно: трудно быть справедливым. [В. Гюго]]
Здравствуйте, Cyberax, Вы писали:
C>Обработка данных профиля поверхности. Там сэмплы в 10000х10000 точек — вполне нормальное явление.
А что мешало сделать это массивом value типов?
C>Нет эффективного способа передачи value-типов по ссылке.
void Foo(ref SomeValueType vt)
{
}
Ы? C>Ну и по мелочам напрягала невозможность наследования и реализации интерфейсов (на незабоксированых типах) — приходилось писать один и тот же код несколько раз для разных типов.
void Foo<T>(ref T vt)
where T : ISomeInterface
{
}
Ы?
Или был первый фреймворк?
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, Sheridan, Вы писали:
WH>>Если так то очень глупые компании ибо каждый следующий релиз дотнета работает быстрее. S>Ясное дело быстрее, железо то новое
Все ясно. Я с тролями не разговариваю.
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
WolfHound wrote: > C>Обработка данных профиля поверхности. Там сэмплы в 10000х10000 точек — > вполне нормальное явление. > А что мешало сделать это массивом value типов?
С этим проблем нет (оно так и сделано было, собственно). Эти сэмплы же
еще и обрабатывать надо.
> C>Нет эффективного способа передачи value-типов по ссылке. > void Foo(ref SomeValueType vt) > { > }
См. выделенное.
> Ы?
Происходит боксирование типа -> аллокация на куче (нет, JIT его не
оптимизирует).
> C>Ну и по мелочам напрягала невозможность наследования и реализации > интерфейсов (на незабоксированых типах) — приходилось писать один и тот > же код несколько раз для разных типов. > void Foo<T>(ref T vt) > where T : ISomeInterface > { > } > Ы?
См. выделенное.
> Или был первый фреймворк?
Первый, потом стал второй. Разницы особой нет.
Здравствуйте, WolfHound, Вы писали:
WH>>>Если так то очень глупые компании ибо каждый следующий релиз дотнета работает быстрее. S>>Ясное дело быстрее, железо то новое WH>Все ясно. Я с тролями не разговариваю.
Да, qt мне довольно нравится.
[RSDN@Home][1.2.0][alpha][648]
[Кто в верности не клялся никогда, тот никогда ее и не нарушит. [А. Платен]]
Здравствуйте, WolfHound, Вы писали:
WH>Информации 0. WH>Кстати а свободной памяти на машине сколько было? WH>Просто если памяти было много то ГЦ ее всю и утилизировал чтобы лишний раз мусор не собирать.
Немного не в тему, но что мне оперативку некуда девать? Вот под линуксом вся свободная оперативка на кешь дисковых операций идет. На медленных носителях эффект поразительный (у меня ее 1 Гб, на кэш ок. 700 Мб идет). Так если каждое приложение начнет расти и себе ее хватать, то для других целей ее не останется. Плохо.
Здравствуйте, Sheridan, Вы писали:
S>Здравствуйте, Sheridan, Вы писали:
S>>Так вот, дотнет имхо это часто 3,4
S>ironwit глядя на твой минус я понимаю что был всетаки прав и дотнет тянет только на 1,2 но никак на 3,4
не очень понял такую хитро закрученную фразу.. Я больше логичные строю, на паскале S>Спасибо.
та не за что За тобой очень увлекательно наблюдать
Здравствуйте, ironwit, Вы писали:
S>>>Так вот, дотнет имхо это часто 3,4
S>>ironwit глядя на твой минус я понимаю что был всетаки прав и дотнет тянет только на 1,2 но никак на 3,4 I>не очень понял такую хитро закрученную фразу.. Я больше логичные строю, на паскале
Ну первоначально я оценил дотнет как инструмент для крупных проектов. Ты со мной не согласился...
S>>Спасибо. I>та не за что За тобой очень увлекательно наблюдать
Надеюсь не для того чтобы повеселиться...
[RSDN@Home][1.2.0][alpha][648]
[Hастоящее горе стыдливо. [Ф. Геббель]]
Здравствуйте, Sheridan, Вы писали:
S>Здравствуйте, ironwit, Вы писали:
I>>та не за что За тобой очень увлекательно наблюдать S>Надеюсь не для того чтобы повеселиться...
ну что ты, как можно
Я все еще жду кроссплатформенный янус в котором будет фич побольше чем в текущем и вносится они будут побыстрее