Форум
Компьютерные священные войны
Тема
Как правильно задавать вопросы
B
I
abc
U
X
3
X
3
H1
H2
H3
H4
H5
H6
Asm
C/C++
C#
Erlang
Haskell
IDL
Java
Lisp
MSIL
Nemerle
ObjC
OCaml
Pascal
Perl
PHP
Prolog
Python
Ruby
Rust
SQL
VB
Здравствуйте, vdimas, Вы писали: V>Здравствуйте, Danchik, Вы писали: D>>Давай так, мы в linq2db тестируем MySqlConnector давно, и это охренительный провайдер. Были косяки, которые они исправили практически мгновенно. V>ЧТД, независимое тестирование выявило косяки. V>Еще кому-то требуется объяснять мотив моих рассуждений? V>Т.е. даже в случае, если бы не выявило косяки? D>>Вся наша куча тестов от него в восторге V>Это хорошая информация. V>Но почему бы хотя бы часть этих тестов не перенести в тестовую базу провайдера? V>Откуда независимый разработчик должен догадаться, что в рамках другого проекта существуют тесты, касающегося этого провайдера? V>Опять же, в рамках тестирования linq2db тестируется не сам провадер, а работоспособность ORM- и LINQ-мапперов под него, верно? V>Даже не заглядывая в сами тесты в linq2db ставлю на то, что они написаны из предположения заведомой работоспособности драйвера (любого из используемых в матрице тестов), т.е. целевые юниты тестирования не те, о которых сейчас речь. D>>оракловская поделка просто достала https://github.com/linq2db/linq2db/issues/3145 V>Я в середине нулевых использовал ODBC-драйвер для подключения к MySQL, потому что найденный мною в сети банально не работал. V>Всех подробностей не помню, ес-но, но из основного: V>- коннекшены вели себя нестабильно - периодически самопроизвольно закрывались, если к серверу было открыто несколько коннешенов одновременно из разных потоков; V>- регулярно плевался исключениями по необъяснимым причинам; V>- заметно тормозил, иногда резко нагружал CPU на ровном месте. V>Сейчас подумалось, что вероятнее всего это именно тот драйвер, но тогда это не оракловая поделка, а опенсорсная изначально под крылом MySQL AB. V>Sun и затем Оракл купили всё это дерьмо уже в нагрузку. V>И оба сосредоточены больше на джаве, чем на дотнете, что может объяснять существущее положение вещей. V>В отличие от, сценарий подключения через встроенный в дотнет ODBC-драйвер с использованием нейтивного ODBC-драйвера, установленного в поставке с MySQL, работал без нареканий. V>Кстате, посмотрел, в оракловой доке этот сценарий тоже описывается: V>https://dev.mysql.com/doc/connector-odbc/en/connector-odbc-examples-programming-net-csharp.html D>>Ты также забываешь что оракловский недоносок не поддерживает асинки от слова вообще. V>Я об этом вообще не рассуждал. V>Речь была о несоответствии объёма наличествующих тестов степени важности подобных элементов инфраструктуры. V>Но ОК, давай посмотрим, что за асинхронщину они навертели. V>Сходу нахожу ключевую точку, через которую отправляются все запросы к базе: V>[cs] V> private async ValueTask<int> SendReplyAsyncAwaited(ValueTask<int> task) V> { V> try V> { V> return await task.ConfigureAwait(false); V> } V> catch (Exception ex) V> { V> SetFailed(ex); V> throw; V> } V> } V>[/cs] V>Они превращают достаточно легковесный GC-free ValueTask, обеспечиваемый вылизанным кодом метода [tt]ValueTask<int> Socket.SendAsync(Memory<byte>, ...)[/tt] в AsyncStateMachineBox, который реализует IValueTaskSource, т.е. подменяет уже имеющийся более-менее "статический" экземпляр IValueTaskSource (тот экземпляр создан однажды и закеширован в Socket) на создаваемый каждый раз ненужный класс-оболочку. V>[cs] V> // AsyncStateMachineBox looks like a small type, but it actually is not because V> // it will have a copy of all the slots from its parent. It will add another hundred(s) bytes V> // per each async method in CoreRT / ProjectN binaries without adding much value. Avoid V> // generating this extra code until a better solution is implemented. V> var box = new AsyncStateMachineBox<TStateMachine>(); V>[/cs] V>Какие-то тошнотики-олигофрены... V>Т.е. чуваки продекларировали, что сделают [s]всем хорошо[/s] асинхронщину, но сами в асинхронщине не шарят. V>Картина маслом, оно же рука-лицо. V>А да, следом они превращают ValueTask в Task зачем-то, т.е. дополнительно заворачивают эту обертку еще в похожую обертку, только GC-классов уже побольше, включая сам тяжеловесный Task. V>Ладно, всё, задолбали всеми этими примерами нескончаемого нубства, живущего в "популярном донетном коде". V>Неважно, в официальном или левом, типа MySqlConnector. V>Уже не смешно. V>Сцуко, чем глубже в вопрос погружаешься, тем больше косяков режет глаз. :facepalm:
Теги:
Введите теги разделенные пробелами. Обрамляйте в кавычки словосочетания с пробелами внутри, например:
"Visual Studio" .NET
Имя, пароль:
Загрузить
Нравится наш сайт?
Помогите его развитию!
Отключить смайлики
Получать ответы по e-mail
Проверить правописание
Параметры проверки …