Здравствуйте, Yoriсk, Вы писали:
Y>Еще раз, по порядку: cравниваются реализации на Java и С#. Вы говорите, что реализация на HashMap, который thread-safe только в случае immutable на java вас устраивает, а на Dictionary на .net — нет. Поэому в Dictionary нужен ReaderWriterLock, а в HashMap, ... какая-то аналогичная конструкция на java(ReadWritLock?). Y>Вот я и спрашиваю: а в чём, собственно, разница?
Ок, по порядку:
1) Меня не устраивает perf для Hashtable на c#. По моим данным она в 10 раз ниже аналога на java
2) C Dictionary все ок — производительность что надо. Но проблема с thread-safe которую можно решить с помощью ReaderWriterLock. Но тогда он станет еще медленнее чем Hashtable. Не ок.
3) У java есть Hashmap and ConcurrentHashmap (добавленные соотвественно в 1 и 1.5[это 2004 год,!]), которые работают довольно быстро в отличии от продукта Сатьи и в которых решена проблема thread safe.
В итоге мне придется делать свою синхронизации для Dictionary, потому что какой-то молодец додумался реализовать нечто подобное только в 4 net.
А про то как работает GC в CLR я вообще молчу — тут нужна отдельная ветка с разбором всего и вся.
Ну вот и объясните мне как со всеми этими бесконечными косяками С# и Шарепоинт станут Великими? Что об этом говорят ваши Евангилисты?
Здравствуйте, mapnik, Вы писали:
M>Но тогда он станет еще медленнее чем Hashtable. Не ок.
Ты пробовал? Или так, теоретизируешь?
M>3) У java есть Hashmap and ConcurrentHashmap (добавленные соотвественно в 1 и 1.5[это 2004 год,!]), которые работают довольно быстро в отличии от продукта Сатьи и в которых решена проблема thread safe.
Про ConcurrentDictionary и CoreFX ты почему мимо ушей пропустил? Не вписывается в теорию?
Здравствуйте, mapnik, Вы писали:
M>Вы угараете надо мной что ли? В какой реальности этот CoreFX может заменить скажем .net 3.5 на машине кастомера? Не смешно
Ну, если тебе соображалки не хватает, то расшифрую. В CoreFX есть исходник ConcurrentDictionary с либеральной лицензией. Копируешь этот исходник и его зависимости в свой проект и собираешь под 3.5.
Здравствуйте, tofox2, Вы писали:
M>>И нет я не могу использовать ConcurrentDictionary — мне нужно поддерживать версии .net < 4. T>несложно самому обернуть Dictionary блокировками
Так как это сделано в ConcurrentDictionary — довольно сложно.
Здравствуйте, mapnik, Вы писали:
НС>>Кто тебе такой бред сказал?
M>Вы документацию производителя вообще читаете? Впрочем зачем это шарепоинт-программистам, это же не модно — читать.
молодцы, оправдываете назначение раздела. а я уж испугался что здесь теперь начнут решать скучные технические проблемы
Здравствуйте, mapnik, Вы писали:
M>Здравствуйте, Yoriсk, Вы писали:
M>Ок, по порядку: M>1) Меня не устраивает perf для Hashtable на c#. По моим данным она в 10 раз ниже аналога на java
Вот это упёртость, внушает!
M>2) C Dictionary все ок — производительность что надо. Но проблема с thread-safe которую можно решить с помощью ReaderWriterLock. Но тогда он станет еще медленнее чем Hashtable. Не ок.
lol
M>3) У java есть Hashmap and ConcurrentHashmap (добавленные соотвественно в 1 и 1.5[это 2004 год,!]), которые работают довольно быстро в отличии от продукта Сатьи и в которых решена проблема thread safe.
lol
M>Ну вот и объясните мне как со всеми этими бесконечными косяками С# и Шарепоинт станут Великими? Что об этом говорят ваши Евангилисты?
А всё же, что вы скажете насчёт того что java сливает
Здравствуйте, Ночной Смотрящий, Вы писали:
НС>Ну, если тебе соображалки не хватает, то расшифрую. В CoreFX есть исходник ConcurrentDictionary с либеральной лицензией. Копируешь этот исходник и его зависимости в свой проект и собираешь под 3.5.
Зачем мне умножать количество индусского кода в проекте? У меня и так его весь дотНет.
Я лучше уж тогда напишу нормальную реализацию собственными силами. Просто это время, которое можно было бы потратить на более интересные вещи. Вот так жизнь и проходит мимо
Здравствуйте, mapnik, Вы писали:
Y>>Вот я и спрашиваю: а в чём, собственно, разница?
M>Ок, по порядку: M>1) Меня не устраивает perf для Hashtable на c#. По моим данным она в 10 раз ниже аналога на java
Про Dictionary мы выяснили: его аналог на java — HashMap работает примерно с такой же скоростью.
А какой аналог Hashtable в java и где "данные"?
Здравствуйте, mapnik, Вы писали:
M>2) C Dictionary все ок — производительность что надо. Но проблема с thread-safe которую можно решить с помощью ReaderWriterLock. Но тогда он станет еще медленнее чем Hashtable. Не ок.
— Используете не подходящие конструкции языка из доисторических времен.
— Меряете производительность с помощью, DateTime, вместо того, чтобы взять профайлер, который, BTW, вам расскажет в чем проблема.
— Когда вам советуют использовать Dictionary, ваш изначальный код вдруг обрастает требованиям к многопоточности, с непоколибимой уверенностью, что вы уже и ее померяли и увидели просадку.
Здравствуйте, mapnik, Вы писали:
M>Ну вот и объясните мне как со всеми этими бесконечными косяками С# и Шарепоинт станут Великими? Что об этом говорят ваши Евангилисты?
Кэп: как только программисты начнут учить матчасть и перестанут использовать легаси-фреймворки (.net 3.5? 2015й? Серьёзно???).
Ну, т.е. никогда
По сабжу: хотите поддерживать легаси — ilspy в жубы и самостоятельно переписываем свежедобавленные (всего-то 5 лет прошло) плюшки. Не хотим — не поддерживаем.
В чём проблема-то?
Здравствуйте, Sinix, Вы писали:
S>Кэп: как только программисты начнут учить матчасть и перестанут использовать легаси-фреймворки (.net 3.5? 2015й? Серьёзно???). S>Ну, т.е. никогда
1 — учить матчасть — это вы скажите индусам или пакистанцам (или австралам?) которые писали дотНет. Версия concurrent dictionary появилась через 6 лет после аналога в java. Нормально так да?
2 — "перестанут использовать легаси-фреймворки" — это продакшен друг мой. Некоторые кастомеры еще сидят на 2-ке (вы ее в силу вашего молодого возраста верно и не помните). А некоторые кастомеры еще сидят на java 1.6. Это реальный мир друг мой, а не россыпь рекламных буклетов от MS.
S>По сабжу: хотите поддерживать легаси — ilspy в жубы и самостоятельно переписываем свежедобавленные (всего-то 5 лет прошло) плюшки. Не хотим — не поддерживаем. S>В чём проблема-то?
Да не нужен никакой ilspy. Просто нужно сделать нормальную реализацию самому и делов-то. Конечно вы этого не поймете — вы же у нас (и ваши друзья которые активно восхвалют Джеффри и Мадса вместе с вами) яркий framework developer, один из тех для кого Баллмер пританцовывал в свое время.
Просто руки опускаются. Одну кривость исправишь, тут же другая вылезает. Я ожидал что CLR будет нормальной платформой которая поможет мне сфокусироваться на создании хорошего продукта. Вместо это я должен патчить ее повсюду.
Здравствуйте, mapnik, Вы писали:
M>1 — учить матчасть — это вы скажите индусам или пакистанцам (или австралам?) которые писали дотНет. Версия concurrent dictionary появилась через 6 лет после аналога в java. Нормально так да?
Нет. Учить матчасть — это в том числе самостоятельно решать проблемы, а не обзывать других индусами, т.к. они не сделали это за вас. Там ещё много всего, но начать стоит именно с этого.
M>2 — "перестанут использовать легаси-фреймворки" — это продакшен друг мой. Некоторые кастомеры еще сидят на 2-ке (вы ее в силу вашего молодого возраста верно и не помните). А некоторые кастомеры еще сидят на java 1.6. Это реальный мир друг мой, а не россыпь рекламных буклетов от MS.
Кэп: за редчайшими исключениями типа использования недокументированных нюансов переезд с 2.0 на 4.6 делается без перекомпиляции. Правкой appconfig. Вопрос лени и квалификации разработчиков.
С 1.1 — с ходу не вспомню, поддерживается запуск без перекомпиляции, или нет. Мы в своё время не страдали и просто перешли с колёс на бету 2.0, как только go live вышла.
M>Да не нужен никакой ilspy. Просто нужно сделать нормальную реализацию самому и делов-то.
Кэп #2: как самостоятельно напишете что-то сравнимое — приходите. Там кроме пафоса с апломбом ещё знания нужны, вот незадача
Здравствуйте, mapnik, Вы писали:
M>Здравствуйте, Sinix, Вы писали:
это вы скажите индусам или пакистанцам (или австралам?) которые писали дотНет. Версия concurrent dictionary появилась через 6 лет после аналога в java. Нормально так да?
M>Просто руки опускаются. Одну кривость исправишь, тут же другая вылезает. Я ожидал что CLR будет нормальной платформой которая поможет мне сфокусироваться на создании хорошего продукта. Вместо это я должен патчить ее повсюду.
Понимаете, просто .NET как раз и младше джавы примерно на 6 лет, java появилась в 95-ом, а .net в 2001-ом.. и это касается не только CLR, с фрэймворками, build инструментами тоже самое, обычно появляется фрэймворк для джава, а через несколько лет портируется на .NET или создают библиотеку с похожим функционалом.. например NUnit, NHibernate, Spring.NET...