|
Почему в .Net такие убогие коллекции?
|
|||
---|---|---|---|
#18+
cdtyjvКак я и сказал выше, проигрыш в XML идет в разы. XML используется не для решения задач производительности, а для стандартизации. А стандартизация - это такая вещь, которая поважнее многих производительностей будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2014, 16:13 |
|
Почему в .Net такие убогие коллекции?
|
|||
---|---|---|---|
#18+
hVostt а не на подкреплённые реальной практикой. А вот это уже наезд. Я работал и с байтами - читая их напрямую из сокета, и со всякими там WCF. Между прочим, у последнего есть тип байндинга как раз бинарный - то есть, надо будет, включаешь. А что касается низкоуровневых сокетов - то читать параметры из битов, установленных в шестнадцатиразрядном целом, это наверное, очень быстро было. Но это было при связи с контроллером. То есть, не было выбора. А когда выбор есть - то выбирается простота. Связь сейчас черезчур быстрая, и дешевая, чтобы на ней экономить. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2014, 16:35 |
|
Почему в .Net такие убогие коллекции?
|
|||
---|---|---|---|
#18+
D129А вот это уже наезд. Я работал и с байтами - читая их напрямую из сокета, и со всякими там WCF. Между прочим, у последнего есть тип байндинга как раз бинарный - то есть, надо будет, включаешь. А что касается низкоуровневых сокетов - то читать параметры из битов, установленных в шестнадцатиразрядном целом, это наверное, очень быстро было. Но это было при связи с контроллером. То есть, не было выбора. А когда выбор есть - то выбирается простота. Связь сейчас черезчур быстрая, и дешевая, чтобы на ней экономить. меня вот что поражает. ведь много всего есть. и молотки, и микроскопы, и ножи, и топоры, пассатижи, отвёртки... как же выбрать правильный инструмент? наверное надо брать самый мощный? кувалда! да, лучше чем микроскоп, определённо. и чё тут думать? что за придурки выдумали микроскоп? есть же нормальная такая мужская кувалда. когда начинают рассуждать о чём-то в отрыве от контекста реальной задачи, это просто смешно. XML медленный... что это $#ть, значит? для чего? что за детский сад, не пойму? из какой берлоги некоторые товарищи повылазили? или это лето так действует на неокрепший детский мозг? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2014, 16:54 |
|
Почему в .Net такие убогие коллекции?
|
|||
---|---|---|---|
#18+
Я понимаю, почему адепты дотнета искренне не понимают, зачем нужен перфоманс: вы просто дальше обычных корпоративных сайтиков ничего не видели, и не разрабатывали. Окей, расскажу. Я разрабатываю коробочный продукт. Потенциальные покупатели оценивают его по ряду характеристик, которые условно можно разделить на качественные и количественные. Качественные характеристики - это что бы в продукте был заявленный функицонал, что бы не вылетали ошибки, что бы его можно было легко конфигурировать, и т.д.. Количественные характеристики - это его скорость (читай - операций в секунду) и потребление памяти на стандартных наборах данных. Когда кому-то нужен этот продукт, он сначала шерстит рынок, и находит предварительно подходящие варианты. Потом на этапе предварительного эвалуэйшена откидывает откровенный шлак. Оставшиеся вендоры подвергаются тестированию. Как правило, с качественными характеристиками все более менее на одном уровне. Возьмите Thrift, Protobuf и Avro, и посмотрите на то, что они умеют. Этого за глаза хватает подавляющему большинству кастомеров. Поэтому наиболее интересным этапом отбора является количественное тестирование, когда юзеры начинают гонять данные и смотреть на следующие вещи: - загрузку сети - загрузку процессора - скорость передачи полезной информации - количество операций в секунду - нагрузку на память. И когда вы к ним придете со своим несчастным SOAP, и покажите результат в несколько раз хуже других, ибо даже дураку понятно, что XML будет работать медленнее практически всего, то ни про какие premarute optimization вы им даже заикнуться на успеете, так как с вами просто перестанут разговаривать, и выкинут из конкурса. Вы же смотрите на вещи со стороны прикладного программиста, который сидит в каком-нибудь банке, и пилит очередную унылую учетную систему. Конечно, вашему супер-пупер решению, где бухгалтерша посылает отчетик раз в пятилетку, не нужна никакая скорость. Вам этого XML хватит за глаза на годы вперед. Но, представьте себе, есть и другие проекты, где нужна максимальная скорость. Например, высокоскоростная торговля. Пойдите-ка и расскажите им про свой XML и premature optimization. Так что не пишите ерунды про "берлоги" и "быстрый XML", вы тем самым выставляете себя дилетантами. Лучше расширяйте свой кругозор. У того, чем сейчас занимаюсь я, цель простая - он должен порвать по скорости конкурентов, которых как минимум 4 штуки. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2014, 19:04 |
|
Почему в .Net такие убогие коллекции?
|
|||
---|---|---|---|
#18+
cdtyjvУ того, чем сейчас занимаюсь я, цель простая - он должен порвать по скорости конкурентов, которых как минимум 4 штуки. О! Стало быть, проект пишется на голом Си? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2014, 19:21 |
|
Почему в .Net такие убогие коллекции?
|
|||
---|---|---|---|
#18+
petalvikО! Стало быть, проект пишется на голом Си?Отнюдь. Еще один дилетантский миф, что все сверхбыстрое должно быть написано на сях. Код, который генерирует JIT в Java не смогут превзойти по скорости подавляющее большинство программистов C/C++. А если и смогут, то не в разы, а дай бог, что б на пару десятков процентов. Но это мы говорим про какую-нибудь процедурку. А когда у вас проект на десятки и сотни тысяч строк кода, то на этот выигрышь всем становится плевать, так как пока синики напишут соответствующий функционал, таки выжав дополнительные 10 процентов, джависты и дотнетовцы уже займут весь рынок, благодаря высокой скорости разработки. Пипец, среди вашей тусовки есть хоть кто-то, кто не мыслит шаблонами? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2014, 19:29 |
|
Почему в .Net такие убогие коллекции?
|
|||
---|---|---|---|
#18+
cdtyjvpetalvikО! Стало быть, проект пишется на голом Си?Отнюдь. Еще один дилетантский миф, что все сверхбыстрое должно быть написано на сях. Код, который генерирует JIT в Java не смогут превзойти по скорости подавляющее большинство программистов C/C++. А если и смогут, то не в разы, а дай бог, что б на пару десятков процентов.В Java можно отключить контроль типов и границ массивов? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2014, 19:33 |
|
Почему в .Net такие убогие коллекции?
|
|||
---|---|---|---|
#18+
Алексей КВ Java можно отключить контроль типов и границ массивов?Ерунду не спрашивайте. После ваших перлов про XML, вопросы про контроль границ массива выглядят смешно. В Java есть прямой доступ к памяти процесса через специальный утилитарный класс. Вызов операций чтения/записи этого класса после компилирования JIT-ом вырождается в одну единственную инструкцию mov. Поэтому если вы дошли до того, что вам проверки границ массивов начинают отравлять жизнь, то вы берете этот класс, и начинаете фигачить что-угодно и куда-угодно без каких-либо проверок. Конкретно в моей задаче это не является узким местом. У меня другие узкие места - сеть, аллокации массивов, последовательная vs рандомная запись/чтение в/из MemoryStream, рефлекшн. Разумеется, у меня есть некоторое количество unsafe кода. И я уверен, что добавь я его еще больше, приложение станет работать еще быстрее. Но так как на данный момент я не уперся в это, я склон считать, что выигрыш от этого с учетом амортизации будет крайне и крайне невелик. Поэтому мне плевать на эти несчастные границы массивов. Но если надо будет - я от них смогу избавиться, как в Java, так и в .Net. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2014, 19:43 |
|
Почему в .Net такие убогие коллекции?
|
|||
---|---|---|---|
#18+
cdtyjvУ меня другие узкие места - сетьЭто да, как было сказано выше, сеть все твои потуги сводит к нулю. cdtyjvаллокации массивовТут-то что не так? Они у тебя здоровые и в LOH попадают? Или что? cdtyjvпоследовательная vs рандомная запись/чтение в/из MemoryStreamЧто за ацкий алгоритм вызывает такую дилемму? cdtyjvрефлекшнЭто жёстко. Если ты такой реактивный, почему используешь рефлекшен? Читай про компиляцию Expression Tree или про более низкий уровень - Emit. cdtyjvРазумеется, у меня есть некоторое количество unsafe кода.Ну и что от него толку, если рядом используется рефлекшен? И эти люди учат нас ковыряться в носу... ... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2014, 20:05 |
|
Почему в .Net такие убогие коллекции?
|
|||
---|---|---|---|
#18+
cdtyjvадепты дотнета искренне не понимают, зачем нужен перфоманс cdtyjvесть и другие проекты, где нужна максимальная скорость. Например, высокоскоростная торговля Я занимался трейдингом на C#. И я действительно подтверждаю, что использование SOAP, Xml и штатных форматтеров (даже BinaryFormatter) сильно замедляет процесс обмена данными. Самое лучшее по скорости из опробованного - в корпоративной сети Tcp/Ip, наружу поток через UDP, протокол самописный со своим форматтером либо использование движка FAST/FIX Тем не менее, где сверхскорость не нужна, было и Xml over MSMQ, и Xml over tcp, SOAP over tcp и SOAP over HTTP (интегрируемых систем было вагон и тележка) Так что вопрос в допустимой задержке. Коллеги по форуму хотят вам сказать, свеном, что для вашей задачи, ВОЗМОЖНО, вполне допустимо использование Xml и прочих высокоуровневых протоколов. Вы ведь не сказали, в какие рамки должны уложиться... Может, откроете, наконец, тайну - хотя бы какого класса/типа ваша разрабатываемая система и где именно в ней вы собираетесь порвать всех по скорости передачи данных? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2014, 20:06 |
|
Почему в .Net такие убогие коллекции?
|
|||
---|---|---|---|
#18+
Arm79Может, откроете, наконец, тайну - хотя бы какого класса/типа ваша разрабатываемая система и где именно в ней вы собираетесь порвать всех по скорости передачи данных? Рискну предположить - что-то типа cdtyjvThrift, Protobuf и Avro упомянутых автором выше ... ... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2014, 20:56 |
|
Почему в .Net такие убогие коллекции?
|
|||
---|---|---|---|
#18+
cdtyjvВозьмите Thrift, Protobuf и Avro, и посмотрите на то, что они умеют. Этого за глаза хватает подавляющему большинству кастомеров. кастомера, эти потроха, мягко говоря, мало интересуют. Если я правильно понимаю, кто есть кастомер, конечно. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2014, 21:35 |
|
Почему в .Net такие убогие коллекции?
|
|||
---|---|---|---|
#18+
Arm79Так что вопрос в допустимой задержке. Коллеги по форуму хотят вам сказать, свеном, что для вашей задачи, ВОЗМОЖНО, вполне допустимо использование Xml и прочих высокоуровневых протоколов. Вы ведь не сказали, в какие рамки должны уложиться...Коробочный продукт, на основе которого кастомеры строят свои решения. Поэтому критерий только один - как можно быстрее. XML под этот критерий не попадает никоим образом. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2014, 21:59 |
|
Почему в .Net такие убогие коллекции?
|
|||
---|---|---|---|
#18+
cdtyjvИ когда вы к ним придете со своим несчастным SOAP, и покажите результат в несколько раз хуже других, ибо даже дураку понятно, что XML будет работать медленнее практически всего, то ни про какие premarute optimization вы им даже заикнуться на успеете, так как с вами просто перестанут разговаривать, и выкинут из конкурса. От такой невиданной глупости я аж прослезился. Всё остальное такой же бред. Как я уже говорил, рассуждения на уровне детского сада, в отрыве от контекста конкретной задачи говорить, что «SOAP в несколько раз хуже других» — это заявление не мужа, а пацана со двора, который ещё не переболел максимализмом. Желаю вам повзрослеть, и надеюсь когда-нибудь вам доведётся писать «коробочное решение для юзеров». ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2014, 08:27 |
|
Почему в .Net такие убогие коллекции?
|
|||
---|---|---|---|
#18+
Arm79Может, откроете, наконец, тайну - хотя бы какого класса/типа ваша разрабатываемая система и где именно в ней вы собираетесь порвать всех по скорости передачи данных? я думаю, что нет никакой у него задачи. сам придумал, сам посмеялся. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2014, 08:28 |
|
Почему в .Net такие убогие коллекции?
|
|||
---|---|---|---|
#18+
cdtyjvКоробочный продукт, на основе которого кастомеры строят свои решения каково назначение продукта? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2014, 08:31 |
|
Почему в .Net такие убогие коллекции?
|
|||
---|---|---|---|
#18+
hVosttКак я уже говорил, рассуждения на уровне детского сада, в отрыве от контекста конкретной задачи говорить, что «SOAP в несколько раз хуже других» — это заявление не мужа, а пацана со двора, который ещё не переболел максимализмом. Желаю вам повзрослеть, и надеюсь когда-нибудь вам доведётся писать «коробочное решение для юзеров».Вам до сих пор неводмек, что у меня нет конкретной прикладной задачи. У разработчиков SQL Server есть прикладная задача? Нет, им надо написать максимально крутой SQL движок, что бы когда их будут сравнивать с Oracle, они показывали лучшие цифры, потому что изначально потребности и возможности кастомера неизвестны, так как неизвестен сам кастомер. Идите и предложите разработчикам SQL Server хранить данные СУБД в XML. Ну а чо, диски же сейчас большие и дешевые! ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2014, 09:34 |
|
Почему в .Net такие убогие коллекции?
|
|||
---|---|---|---|
#18+
cdtyjvВам до сих пор неводмек, что у меня нет конкретной прикладной задачи. Вообще-то я уже понял, что задачи у вас нет. Поэтому времени вагон и можно парить мозги людям здесь на форуме. cdtyjvУ разработчиков SQL Server есть прикладная задача? У них есть свой круг задач. Если вы не заметили, есть несколько редакций SQL Server для разных областей применения. Как и наборы функций и возможностей. cdtyjvНет, им надо написать максимально крутой SQL движок, что бы когда их будут сравнивать с Oracle, они показывали лучшие цифры, потому что изначально потребности и возможности кастомера неизвестны, так как неизвестен сам кастомер. Ещё раз спрашиваю, в какой части глуши матушки России находится та берлога, откуда вы вылезли? cdtyjvИдите и предложите разработчикам SQL Server хранить данные СУБД в XML. Ну а чо, диски же сейчас большие и дешевые! Я предложил бы вам купить мозг, но к сожалению он не продаётся. Поэтому искренне сочувствую. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2014, 09:42 |
|
Почему в .Net такие убогие коллекции?
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2014, 09:50 |
|
Почему в .Net такие убогие коллекции?
|
|||
---|---|---|---|
#18+
cdtyjvВам до сих пор неводмек, что у меня нет конкретной прикладной задачи. Тогда зачем описывать сферического коня в вакууме? Универсальной таблетки нет. И пытаться делать супер-пупер архитектуру на все случаи жизни бессмысленно. Тот же пример с СУБД - если они так хороши и универсальны, почему появляются embedded СУБД, key-value хранилища или in-memory database системы? Если вы так озабочены конкурентными преимуществами - дарю идею: в вашу прикладную неконкретную систему-конструктор заложите еще выборочные защиту целостности (ЭЦП), конфиденциальность (шифрование), сжатие (архивирование), защиту от DDOS, MIM, не забудьте интеграцию с каким-нибудь аутентификационным центром наподобие Tivoli Access Manager. И у меня еще вопрос. Если .Net так плох, а вам нужны любые преимущества над конкурентами, то почему вы не сделаете вашу систему на Java, который обгоняет с++ по скорости исполнения кода, и .Net - по скорости разработки? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2014, 10:02 |
|
Почему в .Net такие убогие коллекции?
|
|||
---|---|---|---|
#18+
Рискну предположить, что Свеному поручили реализовать кусок C# драйвера к чему-то (ядру какого-то продукта). Причём не с нуля, а дали кусок кода из Java версии драйвера. И проблема в том, что Свеном не может придумать, как правильно решить поставленную задачу на C#, а код Java в лоб не портируется. Ну и наш юный падаван обвиняет во всём "кривой .Net с его убогими коллекциями". О самом продукте он скорее всего знает только в общих чертах, технические детали ему неведомы. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2014, 10:21 |
|
Почему в .Net такие убогие коллекции?
|
|||
---|---|---|---|
#18+
skyANAРискну предположить, что Свеному поручили реализовать кусок C# драйвера к чему-то (ядру какого-то продукта). Причём не с нуля, а дали кусок кода из Java версии драйвера. И проблема в том, что Свеном не может придумать, как правильно решить поставленную задачу на C#, а код Java в лоб не портируется. Ну и наш юный падаван обвиняет во всём "кривой .Net с его убогими коллекциями". О самом продукте он скорее всего знает только в общих чертах, технические детали ему неведомы. То что он не рубит в Нет это давно понятно. Но если бы он был крутой, то вряд ли делал бы такие детские высеры. Я конечно понимаю первые эмоции и тд, но все же это не профессионально:) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2014, 10:26 |
|
Почему в .Net такие убогие коллекции?
|
|||
---|---|---|---|
#18+
netivan, а я где-то сказал, что он крутой? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2014, 10:28 |
|
Почему в .Net такие убогие коллекции?
|
|||
---|---|---|---|
#18+
hVosttcdtyjv, http://technet.microsoft.com/ru-ru/library/ms189887(v=sql.105).aspx В довесок... чтобы кое-кто потом не утверждал, что XML в базах данных это "сугубо личная проблема" MSSQL... тынц тынц тынц ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2014, 10:28 |
|
|
start [/forum/topic.php?fid=20&msg=38684421&tid=1402627]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
49ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 157ms |
0 / 0 |