Здравствуйте, samius, Вы писали:
S>У нас соотношение managed/native порядка 250/1. Интеропа почти нет.
Ну, у нас много ввиду того, что нет целиком изолированных нативных модулей, на нейтиве написаны лишь критические составляющие части каждого модуля.
S>На дотнете кончилась фантазия по выдумыванию как его ускорить, тупое переписывание один в один на плюсы дало ускорение в 1.5 раза.
Во-первых, один в один не всегда просто переписать, в нашем случае мессейджинг на ГЦ немного развязывает руки и всё упрощает.
Во-вторых, ускорение этого или другого подобного кода в 1.5 раза не прибавит и 1% общей производительности, т.к. этот код выполняется относительно редко, в моменты изменения состояний канала. И хоть такие изменения в независимых каналах происходят в нагруженной системе хаотично несколько раз в секунду, это все-равно очень редко.
В-третьих, если кусок кода после переписывания не ускоряется хотя бы вдвое, то я его оставляю до лучших времен.
В-четвертых, мне приходилось переписывать даже некоторый нативный код (над кодеками работал) для получения всего 20%-25% выигрыша, и оно того стоило.
----------
В общем, топик был про C# vs С++, я считаю полезным и то и другое. Из дотнета можно черпать мощь библиотек, из нейтива — мощь железки, сочетать с умом, и будет всем щастье.
Здравствуйте, MxKazan, Вы писали:
MK>Здравствуйте, vdimas, Вы писали:
V>>Тогда встречный ликбез для тебя: рантайм и основные .Net сборки (mscorlib, System) постоянно обновлялись после выхода второго фреймворка (когда я говорю второй фреймворк, то это именно релиз Microsoft .Net Framework 2.0, который действительно 2.0.50727). Одни из самых заметных обновлений рантайма, пришедшее с .Net 3.0 — это доработка GC, самое заметное изменение сборок версии 2.0.50727, пришедшее с .Net 3.5 — это интерфейс класса Socket из System.dll. А так по мелочи доработок была куча (начни от ссылки в пред. посте), от внутренних кишок System.Data, до дублирования и переноса по неймспейсам объявлений наиболее популярных интеропных COM структур и интерфейсов.
И для порядку, так сказать:
из презенташки Микрософта по 2010-й Студии...
Здравствуйте, MxKazan, Вы писали:
V>>Тогда встречный ликбез для тебя: рантайм и основные .Net сборки (mscorlib, System) постоянно обновлялись после выхода второго фреймворка (когда я говорю второй фреймворк, то это именно релиз Microsoft .Net Framework 2.0, который действительно 2.0.50727). Одни из самых заметных обновлений рантайма, пришедшее с .Net 3.0 — это доработка GC, самое заметное изменение сборок версии 2.0.50727, пришедшее с .Net 3.5 — это интерфейс класса Socket из System.dll. А так по мелочи доработок была куча (начни от ссылки в пред. посте), от внутренних кишок System.Data, до дублирования и переноса по неймспейсам объявлений наиболее популярных интеропных COM структур и интерфейсов. MK>Короче это. Не сошлись вы в том, что один понял 3.0 как версию CLR, другой говорил о CLR, который шел вместе с 3-м FW. Вот и всё, рабочие моменты Кстати, я пару раз на собеседованиях слышал, что некоторые так и не перешли на третий FW, потому что ждут полноценно нового рантайма.
Очень глупо. 3.0 и особенно 3.5 это очень большой шаг вперед в сравнении с 2.0. CLR мало на что влияет как таковой.
Здравствуйте, MxKazan, Вы писали:
V>>>Тогда встречный ликбез для тебя: рантайм и основные .Net сборки (mscorlib, System) постоянно обновлялись после выхода второго фреймворка (когда я говорю второй фреймворк, то это именно релиз Microsoft .Net Framework 2.0, который действительно 2.0.50727). Одни из самых заметных обновлений рантайма, пришедшее с .Net 3.0 — это доработка GC, самое заметное изменение сборок версии 2.0.50727, пришедшее с .Net 3.5 — это интерфейс класса Socket из System.dll. А так по мелочи доработок была куча (начни от ссылки в пред. посте), от внутренних кишок System.Data, до дублирования и переноса по неймспейсам объявлений наиболее популярных интеропных COM структур и интерфейсов. MK>И для порядку, так сказать: MK> MK>из презенташки Микрософта по 2010-й Студии...
vdimas: Я все еще жду от Вас публичных извинений и признания неправоты...
Здравствуйте, MxKazan, Вы писали:
MK>- Изначально ты написал: "И еще забыл, что последние года 4 тактовая частота процов практически не растет, а обсуждаемого скачка оптимизации JIT-а при переходе на 3.0 версию не было ВООБЩЕ". MK>- На что получил ответ, что рантайм по прежнему 2.0, что он не менялся со времен второго дотНета, ну нету CLR 3.0 и всё.
А откуда взялось слово CLR? Почему ты решил, что речь о CLR, а не о .Net Framework, например?
MK>- Тем не менее, как контраргумент ты выдвинул такое: "Тем не менее, сам рантайм и .Net-сборки от второго фреймворка обновлялись с выходом каждого последующего или их SP. Для интереса, вот список изменений только лишь для 2.0SP1 http://support.microsoft.com/kb/945757, остальное найти так же не трудно, если есть желание."
Человек дал понять, что там ничего и не могло поменяться, ввиду того, что версия CLR не менялась. Я попытался опровергнуть это "мнение", дав немного информации для затравки.
MK>Собственно отсюда и вывод, что сервис-паки каким-то магическим образом повышают версию.
А ну тогда ты прав, ведь .Net Framework 3.5SP1 — это следующая (более высокая) версия после .Net Framework 3.5
Знаешь, вот какая-то сплошная лень и инфатильность прет из форумов последние годы. Раньше достаточно было просто намекнуть, и все всё понимали, а теперь разжевать мало, надо не забыть в рот положить...
Ok, вот ложу еще и в рот:
В Windows версия файла состояит из 4-х полей: major, minor, build, revision. MS для версий своих продуктов тоже использует подобную маркировку, причем версии файлов старается маркировать так же как версии продуктов (не всегда правда, но не суть). Далее, хотя последние 2 поля давно используются по другому назначению, чем значит их перевод на русский, тем не менее для обозначения версии используюся именно целочисленных 4 поля (в классике было по 2 байта на каждое). Так вот, мой оппонент даже не потрудился открыть эксплорер и посмотреть на все 4 поля версии, про которую он так много говорил. Он бы тогда обнаружил, что последнее поле в версии постоянно изменяется, и оно вовсе не одинаковое у всех файлов. (Например сейчас последнее поле версии у разных файлов колеблется от 42 до 3053, а после первого выхода .Net 2.0SP1 номер в этом поле выше 926 не поднимался)
Итого: менялся сам рантайм, и, разумеется, менялись версии файлов, его составляющих (нельзя же было заменить файл, не обновив ему версию).
------------------
Для интереса — как это выглядит с моей стороны:
— я припомнил Владу те времена, когда он регулярно вещал не только про Немерле, но и про .Net, рассказывая как много и как просто будут делать будущие оптимизации. Потом это дело притихло, за год примерно перед выходом .Net 3.0 стала просачиваться сюда инсайдерская инфомация об возможных улучшениях рантайма, привязанная к выходу нового фреймворка, и опять же была куча разговоров о "перспективности" и оптимизациях и святого духа, Аминь.
— тут влазит некто, и озвучивает что-то про версию CLR и тут же озвучил мнение, что я не в курсе этого.
— я спрашиваю: и при чем тут?
— в ответ: ты даже не отличаешь CLR от .Net Framework и по той причине ламер.
Дабы не спугнуть, хотел аккуратными вопросами подвести человека к самостоятельному пониманию глубины поримой им... как бы это... невпопадицы, во.
Но не иначе там оказался кремень... по всему объему тела, не исключая жизненно важного для программиста органа, раз из-за такой, мягко говоря, муйни, вытекло столько постов.
Здравствуйте, vdimas, Вы писали:
MK>>- Изначально ты написал: "И еще забыл, что последние года 4 тактовая частота процов практически не растет, а обсуждаемого скачка оптимизации JIT-а при переходе на 3.0 версию не было ВООБЩЕ". MK>>- На что получил ответ, что рантайм по прежнему 2.0, что он не менялся со времен второго дотНета, ну нету CLR 3.0 и всё.
V>А откуда взялось слово CLR? Почему ты решил, что речь о CLR, а не о .Net Framework, например?
Здравствуйте, gandjustas, Вы писали:
G>>>Как это "априори неизвестен"? покажи мне API которые возвращают "незивестно сколько данных". V>>Оно не возвращает, оно читает из сокета в наш предвыделенный буфер. После прочтения возвращает кол-во прочитанных байт. В пакете заголовок и собственно сами данные с неким смещением (зависит от заголовка). Данные обрабатываются прямо из этого буфера по указанной выше причине. G>Так всетаки известно сколько данных.
Ну да, залили в буфер и нам известно сколько в нем прочитанных байт, мы это кол-во в _buffLen и храним.
Я действительно так непонятно выражаться стал, что из предыдущего не понял?
G>Так это и есть обычный FIR, надо будет тесты написать насколько хреново он работает в .NET.
Разве рекурсивный фильтр это FIR? В том сообщении я характер вычислений привел, а не всё целиком. Хотя, это не суть, просто БИХ, ИМХО, более экономные по вычислениям и сами вычисления не зависят от отношения частот семплов и среза.
V>>Да почитал, почитал. Сейчас я тебе контекст обрисовал, ты и сам видишь, что дополнительно параллелить там нечего. Вся система асинхронная, по приходу UDP-пакета ... G>В вашем случае нужна система на базе асинхронных агентов, работающих с асинхронным IO.
Все еще нужна, или я таки озвучил "асинхронно"?
G>Не обязательно. Рецепт производства хороших hiload систем уже давно известен.
РецептЫ. Много аспектов, разная их важность и влияние на конкретные сценарии. В общем, система постоянно оптимизируется и будет оптимизироваться, но прямо все и сразу невозможно, поэтому по всем правилам военного исскуства сделаны пока лишь самые критические вещи.
G>Ну если выделенная память живет недолго, то в под .NET можно и выделять. Хотя это уже в конкретных случаях тестить надо.
Тестили многократно, сотни тысяч раз в секунду выделять нельзя, GC начинает мешать работе.
Здравствуйте, vdimas, Вы писали:
V>Здравствуйте, MxKazan, Вы писали:
MK>>- Изначально ты написал: "И еще забыл, что последние года 4 тактовая частота процов практически не растет, а обсуждаемого скачка оптимизации JIT-а при переходе на 3.0 версию не было ВООБЩЕ". MK>>- На что получил ответ, что рантайм по прежнему 2.0, что он не менялся со времен второго дотНета, ну нету CLR 3.0 и всё. V>А откуда взялось слово CLR? Почему ты решил, что речь о CLR, а не о .Net Framework, например?
Видимо, потому что ты говорил о JIT-е, который таки является частью именно CLR. Ты картинку то поглядел? Мы за последнее время привыкли к незнанию предмета со стороны *упорно голосующих*, так что подобное непонимание не удивительно.
Здравствуйте, criosray, Вы писали:
C>На детские болезни программистов и прочие грабли я налетал примерно 11 лет тому назад, когда работал С/С++ программистом. Так что Ваш комментарий, молодой человек, несколько "мимо тазика".
Так и работал, C/C++ программистом? А это ничего, что такого языка нет и не было?
Здравствуйте, gandjustas, Вы писали:
G>Здравствуйте, FR, Вы писали:
FR>>Шаблоны и классы нужны, позволяют получить более шустрый код чем чистый си.
G>Пример?
C>>На детские болезни программистов и прочие грабли я налетал примерно 11 лет тому назад, когда работал С/С++ программистом. Так что Ваш комментарий, молодой человек, несколько "мимо тазика". L>Так и работал, C/C++ программистом? А это ничего, что такого языка нет и не было?
В каком месте при чтении Вашего ответа следует начинать смеяться?
Здравствуйте, gandjustas, Вы писали:
G>>>Кроме того, повышается переносимость кода. При удачном стечении обстоятельств можно взять код на С и запустить его на видеокарте с помощью CUDA. CC>>Снимай уже розовые очки. CC>>На CUDA перенести удается только хорошо параллелящиеся алгоритмы. Все остальное превращается в УГ. G>Читай внимательнее выделенное.
Ты в выделенном забыл написать слово "очень" после "при".
Далеко не все алгоритмы ложатся на CUDA. Далеко не все объемы данных выгоднее считать на CUDA. Пока еще слишком много "но" в этой технологии.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
MK>>>- Изначально ты написал: "И еще забыл, что последние года 4 тактовая частота процов практически не растет, а обсуждаемого скачка оптимизации JIT-а при переходе на 3.0 версию не было ВООБЩЕ". MK>>>- На что получил ответ, что рантайм по прежнему 2.0, что он не менялся со времен второго дотНета, ну нету CLR 3.0 и всё. V>>А откуда взялось слово CLR? Почему ты решил, что речь о CLR, а не о .Net Framework, например? MK>Видимо, потому что ты говорил о JIT-е, который таки является частью именно CLR. Ты картинку то поглядел? Мы за последнее время привыкли к незнанию предмета со стороны *упорно голосующих*, так что подобное непонимание не удивительно.
Не тратье время на него. Человек привселюдно опозорился, теперь пытается "съехать", будучи не в состоянии признать свою неправоту. Классический юношеский максимализм на лицо...
Здравствуйте, criosray, Вы писали:
C>Детский сад, вторая группа.
Да понимаешь...
В нашей профессии ничего сакрального быть не может по-определнию, и любая Методология не сложнее Алгоритма. Не понял? Прочти еще раз.
Если человек не в состоянии ни аргументировать позицию, ни дать четких определений, а в место ответа на конкретные вопросы несет нечто о "высшем знании" и своей "тайной причастности", и главный аргумент неизменно "да вы просто ничего не понимаете"... это говорит лишь о приличной каше в голове и больше ни о чем.
И вот мы честно неоднократно пытались зайти "с самого начала", задавая наводящие вопросы, но когда дошли до главного, то "рыбка сорвалась" и уплыла в свое "ах, да вы же ну точно ничего не понимаете".
Как итог, немного чувствуем себя в роли тех самых новых ворот, которым взбрендилось разговорить своего известного созерцателя... Абыдно за потраченное ни на что время... Либо еще можно махнуть рукой и откровенно развлекаться.
Здравствуйте, criosray, Вы писали:
V>>А откуда взялось слово CLR? Почему ты решил, что речь о CLR, а не о .Net Framework, например?
C>Потому, что оптимизацией занимается именно CLR.
Потому что на твой ламерский взгляд, первые цифры номера версии составили нечто сакральное.
Вот за тебя твое домашнее задание: эти цифры всего лишь означают привязку к спецификации на байткод/метаинформацию и прочее. И эта спецификация действительно не менялась, но это не значит, что реализация этой спецификации не менялась.
А тут в тебе говорит чванство и лень, раз тебе сложно открыть эксплорер и убедиться наконец самому в том, что CLR еще как менялся, не смотря на изменность первых 3-х цифр в номере версии.
Здравствуйте, MxKazan, Вы писали:
V>>А откуда взялось слово CLR? Почему ты решил, что речь о CLR, а не о .Net Framework, например? MK>Видимо, потому что ты говорил о JIT-е, который таки является частью именно CLR.
Здравствуйте, vdimas, Вы писали:
V>Здравствуйте, criosray, Вы писали:
V>>>А откуда взялось слово CLR? Почему ты решил, что речь о CLR, а не о .Net Framework, например?
C>>Потому, что оптимизацией занимается именно CLR.
V>Потому что на твой ламерский взгляд, первые цифры номера версии составили нечто сакральное.
V>Вот за тебя твое домашнее задание: эти цифры всего лишь означают привязку к спецификации на байткод/метаинформацию и прочее. И эта спецификация действительно не менялась, но это не значит, что реализация этой спецификации не менялась.
V>А тут в тебе говорит чванство и лень, раз тебе сложно открыть эксплорер и убедиться наконец самому в том, что CLR еще как менялся, не смотря на изменность первых 3-х цифр в номере версии.
Чем правее самая старшая изменённая цифра в версии, тем меньше фич добавляется и тем мельче фичи. Причём чаще всего изменение младших двух цифр включет в себя в основном багфиксы. И ты хочешь, что бы при изменении самомй младшей цифры версии дотнета майкрософт начал переколбашивать jit?
Здравствуйте, vdimas, Вы писали:
V>Здравствуйте, MxKazan, Вы писали:
V>>>А откуда взялось слово CLR? Почему ты решил, что речь о CLR, а не о .Net Framework, например? MK>>Видимо, потому что ты говорил о JIT-е, который таки является частью именно CLR. V>А CLR у нас теперь отдельно от фреймворков идёт?
А что это меняет? Ну слушай, уже разобрались что к чему, давай не будем пускаться в демагогию.