Здравствуйте, gandjustas, Вы писали:
G>Здравствуйте, alexey_ma, Вы писали:
_>>Здравствуйте, criosray, Вы писали:
C>>>Здравствуйте, alexey_ma, Вы писали:
_>>>>И как же программисты С++ до сих пор не загнулись при работе с enterprise системами? C>>>Загнулись. Потому 99% enterprise это Java и .NET _>>Насчет Jаva соглашусь. А пример широко известной дотнет enterprise системы ( ну там CRM — ЕRP какой-нибудь)?
G>Sharepoint, Dynamics
+1, А каков процент на рынке? А то я что-то все больше разные SAP-ы, Siebel-ы вижу.
Здравствуйте, alexey_ma, Вы писали:
_>>>И как же программисты С++ до сих пор не загнулись при работе с enterprise системами? C>>Загнулись. Потому 99% enterprise это Java и .NET _>Насчет Jаva соглашусь. А пример широко известной дотнет enterprise системы ( ну там CRM — ЕRP какой-нибудь)?
Microsoft Dynamics. Но энтерпрайз системы проектируются исключительно на заказ и их сотни тысяч, если не миллионы.
Здравствуйте, CreatorCray, Вы писали:
C>>Кстати, С++ вариант по прежнему падает, если count >= 10000 C>>Прекрасный пример — тут Вы правы. CC>Ну, этож твой код падает
Ну напишите такой, чтоб не падал. Или здесь все такие умные, что им это не по силам?
C>>Так что там с Replace? Мы увидим тест для replace внутри wstring`а, который бы отрабатывал по времени примерно столько же, сколько отрабатывал тест на append? Слабо? _>А что не так с алгоритмом replace ?
Это не правильно. Заменить надо ВСЕ вхождения подстроки в строку.
Что-то вроде boost::replace_all, но т.к. буста у меня нет и желания возиться с ним у меня тоже нет, то проверить не могу.
Здравствуйте, Pavel Dvorkin, Вы писали:
G>>Учти также что формальное доказательство дает огромный простор для оптимизации, в отличе от runtime проверок.
PD>Пойми наконец, что никакой проверки не будет вообще.
Проверки не будет — запрета не будет. "Так в чем сила, брат?"
Здравствуйте, Serginio1, Вы писали:
S>Если удаляемые подветки будут хранится в старших поколениях, то они буду фрагментировать данную кучу, и соответсвенно заставляя ее более часто дефрагментировать, при ее заполнении. Плюс проблемы с врайт барьером.
А зачем барьер записи на неизменяемой куче?
Эта хрень нужна когда ссылку на молодой объект помещают в старый объект.
Но в данном случае это невозможно.
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, criosray, Вы писали:
CC>>Так что это в принципе мелочи. C>Когда таких мелочей — миллион — это становится сущей головной болью. Хорошо, что у Вас есть либа, а что делать тому, кто читает Ваш код? Лазать в либу и еще ее читать?
А как шарпники, читают сурсы фреймворка?
Или у них есть какой то другой способ понять что делает вызываемая функция, а?
C>>>На С++ я не программировал уже ой как много лет. Так что забыл больше, чем многие из здесь присутствующих плюсистов когда-либо знали. CC>>Ну хоть как MSDNом пользоваться не забывай. C>Вот-вот. Почему-то с С# на такой банальщине не приходится "пользоваться MSDN".
Мне тоже не приходится.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, criosray, Вы писали:
C>Здравствуйте, alexey_ma, Вы писали:
_>>>>И как же программисты С++ до сих пор не загнулись при работе с enterprise системами? C>>>Загнулись. Потому 99% enterprise это Java и .NET _>>Насчет Jаva соглашусь. А пример широко известной дотнет enterprise системы ( ну там CRM — ЕRP какой-нибудь)?
C>Microsoft Dynamics. Но энтерпрайз системы проектируются исключительно на заказ и их сотни тысяч, если не миллионы.
Да ну? Я цифры не знаю, но примерно год — два назад ситуация была примерно следующая :
CRM-ERP — лидер SAP — 60%, потом Siebel — прoцентов 10%.
Builling системы крупых telecom компаний — примерно 80% — Amdocs CSM
и т.п . Впрочем за точность цифр не ручаюсь
Какая же крупная компания сегодня энтерпрайз системы заказывать будет? Обычно используют уже готовые и обкатанные решения(с кастомизацией конечно).
Здравствуйте, Pavel Dvorkin, Вы писали: PD>Так Рихтер все же прав или нет — насчет просмотра блоков ?
Ты его неправильно понимаешь. Никакие "блоки" памяти GC, естественно, не просматривает. У него есть полная информация об устройстве этих "блоков памяти".
PD>Нет . Я вообще довольно долго писал на Паскале (не Дельфи) под ДОС. И все, что я там знал, я перенес сюда. Свойства алгоритмов и работы с памятью не зависят от языка, если это native код.
Да ладно. То-то в релизах микрософтовского компилятора внезапно появляются тормоза на ровном месте — потому что новая версия чуть по-другому трактует частичные специализации, чем предыдущая.
PD>Копировать без надобноси не надо , и такие конструкции лучше вообще употреблять с осторожностью.
Какие конструкции? Вызов методов? Ну так я тебе напомню, что код в основном из них и состоит. PD>Но для этого надо видеть, во что твой код примерно превратится. Без просмотра ассемблерного кода. Просто в уме понимать
Вот для понимания того, во что превратится твой код, нужно сначала съесть пуд соли с дизассемблером.
PD>Я не собираюсь анализировать не свои библиотеки, а говорю про свой собственный код. Его я смогу проанализировать и понять, что у меня делается.
Если "твой собственный код" пользуется библиотеками, то нихрена полезного из анализа "твоего собственного кода" не выйдет.
PD>Это тебе и кое-кому еще кажется, что это так. Профайлер лишь говорит о том, что есть, но ни слова не скажет о том, что могло бы быть. Вот тебе пример. Подсчет числа счастливых билетов. Тупо — 6-кратный цикл. Немного подумать — пятикратный. Еще подумать — тройной. А, оказывается, есть просто формула, без всяких циклов. Ну вот написал некий программист 6-цикл , видит, что все время уходит на... и что дальше ?
Будет повод исправить программу. А то, может быть, там всё время уходит не на цикл, а на ожидание пользовательского ввода этого номера. В итоге замена "шестикратного цикла" улучшит ситуацию на 1%.
PD>SQL — это тоже "управляемый" язык, так что здесь верно то же, что и для .Net. Но к программированию на уровне "я точно знаю, какие команды процессора у меня выполняются (даже если писалось не на асме)" это не относится.
Это очень узкая точка зрения. Грубо говоря, для SQL сервера команды процессора не имеют никакого значения. Не потому, что он "управляемый", а потому, что основное время уходит на ожидание подъема данных в память. Для него low-level — это "я точно знаю, какие страницы у меня читаются". И эта ситуация ничем принципиально не отличается от C++ и ассемблера. Точно так же опыт нарабатывается исключительно с помощью инструментов. И точно также опыт пользования MS SQL можно перенести на MySQL — как и Паскалевский опыт на С++. Потому что устройство "матчасти" примерно одинаковое. Переносить опыт с Паскаля на SQL, к примеру, будет неэффективно. И с SQL на STL тоже.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, CreatorCray, Вы писали:
CC>Здравствуйте, criosray, Вы писали:
CC>>>Так что это в принципе мелочи. C>>Когда таких мелочей — миллион — это становится сущей головной болью. Хорошо, что у Вас есть либа, а что делать тому, кто читает Ваш код? Лазать в либу и еще ее читать? CC>А как шарпники, читают сурсы фреймворка? CC>Или у них есть какой то другой способ понять что делает вызываемая функция, а?
Есть. http://www.rsdn.ru/forum/flame.comp/3419282.1.aspx
При чем такую же документацию для своего кода делать элементарно:
/// <summary>
/// Описание метода
/// </summary>
/// <param name="args">описание аргумента</param>static void Main(string[] args)
Ввожу /// и студия автоматически генерирует такую вот форму документирования и тут же ее подхватывает.
Ну и кроме того, я могу сполна доверять стандартным классам фреймворка, а вот левой библиотеке некоего Васи Пупкина (ничего личного, я так для примера) — без соответствующего code review доверять ну никак не смогу.
Да и вообще зачем изобретать велосипед? Сколько уже было потрачено человеко часов для такой банальщины, как преобразование базовых типов для вывода в строку?..
C>>>>На С++ я не программировал уже ой как много лет. Так что забыл больше, чем многие из здесь присутствующих плюсистов когда-либо знали. CC>>>Ну хоть как MSDNом пользоваться не забывай. C>>Вот-вот. Почему-то с С# на такой банальщине не приходится "пользоваться MSDN". CC>Мне тоже не приходится.
Про _itow_s Вы знали на генетическом уровне? Да?
Здравствуйте, alexey_ma, Вы писали:
C>>Microsoft Dynamics. Но энтерпрайз системы проектируются исключительно на заказ и их сотни тысяч, если не миллионы. _>Да ну? Я цифры не знаю, но примерно год — два назад ситуация была примерно следующая : _>CRM-ERP — лидер SAP — 60%, потом Siebel — прoцентов 10%. _>Builling системы крупых telecom компаний — примерно 80% — Amdocs CSM
Ну что я могу сказать. Вы просто не понимаете значение термина enterprise система.
Здравствуйте, criosray, Вы писали:
C>Здравствуйте, alexey_ma, Вы писали:
C>>>Так что там с Replace? Мы увидим тест для replace внутри wstring`а, который бы отрабатывал по времени примерно столько же, сколько отрабатывал тест на append? Слабо? _>>А что не так с алгоритмом replace ?
C>Это не правильно. Заменить надо ВСЕ вхождения подстроки в строку.
C>Что-то вроде boost::replace_all, но т.к. буста у меня нет и желания возиться с ним у меня тоже нет, то проверить не могу.
Нет, там все правильно.
replace он такой :
Examines each element in a range and replaces it if it matches a specified value.
Для одиночных символов замечательно работает.
Попробуйте так
append: elapsed: 1219 millisecond
200000000
replace (wchar array) : elapsed : 594 millisecond
before replace c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1
replace (wstring) : elapsed : 485 millisecond
after replace c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2
c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2
Press any key to continue . . .
У вас в коде вроде тоже замена одиночного символа
Справедливости ради, следует заметит что для подстрок все гораздо хуже. STL string не лучшее решение для для частых добавлений и вставок.
Здравствуйте, alexey_ma, Вы писали:
_>У вас в коде вроде тоже замена одиночного символа
Речь шла о замене именно подстроки. Я могу поменять замену символа на замену подстроки из десятков символов и принципиального падения производительности не будет. _>Справедливости ради, следует заметит что для подстрок все гораздо хуже. STL string не лучшее решение для для частых добавлений и вставок.
Вооооооот. О чем и речь.
Здравствуйте, criosray, Вы писали:
C>Здравствуйте, alexey_ma, Вы писали:
C>>>Microsoft Dynamics. Но энтерпрайз системы проектируются исключительно на заказ и их сотни тысяч, если не миллионы. _>>Да ну? Я цифры не знаю, но примерно год — два назад ситуация была примерно следующая : _>>CRM-ERP — лидер SAP — 60%, потом Siebel — прoцентов 10%. _>>Builling системы крупых telecom компаний — примерно 80% — Amdocs CSM C>Ну что я могу сказать. Вы просто не понимаете значение термина enterprise система.
Ну так просвятите
На самом деле я их видел
А чем SAP, Siebel или Amdocs CSM не enterprise система ?
В Израиле SAP используется в правительственных учереждения, больницах и т.п
Amdocs CSM используют следущие опреторы связи ( своими глазами видел)
Израиль : Plephone, Сеllcom, (Partner использует Siebel и Ventiv)
Россия : Beeline.
США : АТ&T, Sprint
Канада : Bell Canada
И т.д.
Почти все крупные компании используют готовые решения.
Здравствуйте, WolfHound, Вы писали:
WH>Здравствуйте, Serginio1, Вы писали:
S>>Если удаляемые подветки будут хранится в старших поколениях, то они буду фрагментировать данную кучу, и соответсвенно заставляя ее более часто дефрагментировать, при ее заполнении. Плюс проблемы с врайт барьером. WH>А зачем барьер записи на неизменяемой куче? WH>Эта хрень нужна когда ссылку на молодой объект помещают в старый объект. WH>Но в данном случае это невозможно.
Это когда ссылку меняешь старшем поколении неважно на молодой или старший.
Согласен, что врайт барьера не будет,так как создаются новые узлы, но будет фрагментация кучи старших поколений, если освободившиеся узлы в них лежат.
Кстати а как там с балансировкой дерева?
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, criosray, Вы писали:
C>Здравствуйте, CreatorCray, Вы писали:
C>>>Кстати, С++ вариант по прежнему падает, если count >= 10000 C>>>Прекрасный пример — тут Вы правы. CC>>Ну, этож твой код падает C>Ну напишите такой, чтоб не падал.
Ай повеселил!
C>Или здесь все такие умные, что им это не по силам?
Ты еще "на слабо" предложи.
Ты посчитай сколько памяти займут эти строки?
На 10к строк С# падает с out of memory
В С++ у тебя вылетает bad_alloc на ~1.4 Гб занятой памяти.
Почему не может выделить еще? Возьми VMMap и посмотри что творится в памяти процесса.
По сути у тебя синтетический тест на хаотическую аллокацию.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, criosray, Вы писали:
C>Здравствуйте, alexey_ma, Вы писали:
_>>У вас в коде вроде тоже замена одиночного символа C>Речь шла о замене именно подстроки. Я могу поменять замену символа на замену подстроки из десятков символов и принципиального падения производительности не будет.
Уверены ?
У меня ваш код при замене
Здравствуйте, Serginio1, Вы писали:
S>Согласен, что врайт барьера не будет,так как создаются новые узлы, но будет фрагментация кучи старших поколений, если освободившиеся узлы в них лежат.
Какая еще фрагментация в случае с уплотняющим мусорщиком?
S>Кстати а как там с балансировкой дерева?
2-3 дерево. Частный случай B дерева. Еще вопросы?
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, criosray, Вы писали:
C>Здравствуйте, alexey_ma, Вы писали:
_>>Почти все крупные компании используют готовые решения.
C>Это совсем не так. Нет готовых решений для enterprise систем. Или Вы серьезно думаете, что СSM или ERP — это есть ПОЛНОЕ enterprise решение?
Ну так смотря для кого. Хотя конечно обычно есть и CRM и ЕRP и еще чего нибудь. Но например SAP и Siebel(Oracle) предлагают и то и другое.
У Вас есть пример написанной с нуля на заказ крупной enterprise системы? В какой компании?