Re[5]: Сравнение ORM
От: alexyakunin  
Дата: 01.09.09 18:27
Оценка:
Здравствуйте, IT, Вы писали:

IT>Здравствуйте, alexyakunin, Вы писали:


IT>На самом деле для Linq с поддержкой Expression можно выжать почти всё. В случае с Linq нам известна структура data source, а это значит, что на лету можно генерировать очень эффективные перекладывалки из датаридера в объекты.


Да, все верно. У нас в этом отношении есть одно проблемное место, которое мы пока не можем закрыть: практически все работа с Tuples у нас происходит с боксингом. Можно сделать и без боксинга, но пока руки не доходят В оригинале я расчитывал на generic virtual methods, но очень быстро выяснилось, что они намного дороже боксинга: http://tips.x-tensive.com/2008/10/method-call-performance.html

Решения, понятно, есть, но делать их пока нет времени Надеюсь, к концу года доберемся

IT>Скажете так нельзя, переделаем на так как можно. Но тогда сразу появится претензия с SqlClient тестам. Получится, что они читят. Они и так читят на Single тестах, т.к. применение Prepare по логике теста весьма сомнительно, но сразу даёт 15-20% производительности, а у других даже команда на каждый вызов создаётся новая.


Думаю, мой голос тут роли играть вообще не должен. Подождем остальных.

IT>Изначально мы не планировали делать поддержку Linq вообще, т.к. думали, что команда L2S займётся поддержкой не только MSSQL, но и других серверов БД. Но т.к. они на это не решились, то я занялся этим делом.


А, ясно

Кстати, а текущие-то тесты компилируются? Если да — думаю, вам стоит из закомиттить. Подозреваю, как минимум NH забороть более, чем реально.

IT>Кстати, есть ещё один кандидат поучаствовать в соревновании — http://code.google.com/p/dblinq2007/ Они пытаются повторить функциональность L2S для нескольких серверов и даже вроде как на базе их кода сделана поддержка этого хозяйства в Mono (хотя могу и соврать).


Я спишусь с ними.
Re[5]: Сравнение ORM
От: alexyakunin  
Дата: 01.09.09 18:29
Оценка:
IT>Кстати, есть ещё один кандидат поучаствовать в соревновании — http://code.google.com/p/dblinq2007/ Они пытаются повторить функциональность L2S для нескольких серверов и даже вроде как на базе их кода сделана поддержка этого хозяйства в Mono (хотя могу и соврать).

Хмм... Последний апдейт — годовалой давности. Стоит ли общаться?
Re[3]: Сравнение ORM
От: koandrew Канада http://thingselectronic.blogspot.ca/
Дата: 01.09.09 19:00
Оценка:
Здравствуйте, IT, Вы писали:

IT>Ага, спасибо. Мы порвали их всех!


IT>С другой стороны, учитывая сколько времени мы потратили на оптимизацию, вычищение боксинга и затрат на приведение типов, было бы стыдно проиграть.


IT>Код для Multiple CUD тестов был дописан уже по ходу, по мотивам тестов. Поэтому они и выглядят вроде как естественно, но работают быстро С другой стороны такая корова пригодится и самому, как-то раньше в голову не пришло. Спасибо создателям тестов за идею и возможность ещё раз взглянуть на API и полезные возможности библиотеки.


IT>С Linq тестами пока не всё так гладно, там ещё много работы (вот если бы MS раньше созналась в том, что они бросают L2S), но думаю, что современем мы и тут не ударим в грязь лицом.


Красиво. А можно посмотреть на код сего дела? Если нельзя выкладывать в паблик, то скинь плиз на мыло.

Спасибо.
[КУ] оккупировала армия.
Re[4]: Сравнение ORM
От: IT Россия linq2db.com
Дата: 01.09.09 19:12
Оценка:
Здравствуйте, koandrew, Вы писали:

K>Красиво. А можно посмотреть на код сего дела? Если нельзя выкладывать в паблик, то скинь плиз на мыло.


Код чего? Булкита? Так вот же — http://www.bltoolkit.net/download.htm. Всё паблик, лицензия MIT, можно даже заворачивать в упаковку и продавать
Если нам не помогут, то мы тоже никого не пощадим.
Re[6]: Сравнение ORM
От: IT Россия linq2db.com
Дата: 01.09.09 19:18
Оценка:
Здравствуйте, alexyakunin, Вы писали:

A>Хмм... Последний апдейт — годовалой давности. Стоит ли общаться?


Судя по логам репозитория последний коммит был пять минут назад.

Ещё раз кстати, есть ещё вот такое дело — http://www.codeplex.com/IQToolkit. Парень из MS и похоже работал в команде L2S (хотя я могу ошибаться). Делает что-то вроде универсальной парсилки LINQ выражений, но для MSSQL поддержка уже есть.
Если нам не помогут, то мы тоже никого не пощадим.
Re[5]: Сравнение ORM
От: koandrew Канада http://thingselectronic.blogspot.ca/
Дата: 01.09.09 19:20
Оценка:
Здравствуйте, IT, Вы писали:

IT>Код чего? Булкита? Так вот же — http://www.bltoolkit.net/download.htm. Всё паблик, лицензия MIT, можно даже заворачивать в упаковку и продавать


Не, код тестов. Где сам булкит мне рассказывать не нужно — я им уже много лет пользуюсь
[КУ] оккупировала армия.
Re[6]: Сравнение ORM
От: IT Россия linq2db.com
Дата: 01.09.09 19:47
Оценка: 12 (1)
Здравствуйте, koandrew, Вы писали:

K>Не, код тестов.


http://code.google.com/p/ormbattle/source/browse/
Если нам не помогут, то мы тоже никого не пощадим.
Re[7]: Сравнение ORM
От: IT Россия linq2db.com
Дата: 01.09.09 19:49
Оценка:
Здравствуйте, alexyakunin, Вы писали:

A>Игорь, мои предварительные поздравления


Спасибо!
Если нам не помогут, то мы тоже никого не пощадим.
Re[10]: Сравнение ORM
От: alexyakunin  
Дата: 04.09.09 06:35
Оценка:
M>В курсе, конечно. Потому и интересно было посмотреть на схватку в комментариях
M>Мое мнение остается прежним -- вы друг друга не поняли. Это круто, конечно, что у вас материализация enity происходит в 4 раза быстрее, но каков профит от этого для бизнес-приложения в целом?

Посмотрите сейчас на новые тесты на paging. Они в основном зависят от Query & Materialization performance. Хотя не только, конечно. Оказалось, большинство участников реализует .Take неэффективно (с ROWNUMBER), и результат — налицо.

M>О, еще вопрос -- планируется ли real-world bench? Я понимаю, что Oren и про них много интересного сказал , но было бы странно, если бы эти его слова для вас значили больше, чем предыдущие


Угу. Только пока не знаю, какой.
Re[7]: Сравнение ORM
От: alexyakunin  
Дата: 04.09.09 06:46
Оценка:
IT>Судя по логам репозитория последний коммит был пять минут назад.

Написал им сегодня.
Re[6]: Сравнение ORM
От: achmed Удмуртия https://www.linkedin.com/in/nail-achmedzhanov-9907188/
Дата: 04.09.09 11:55
Оценка:
Здравствуйте, alexyakunin, Вы писали:

IT>>Кстати, есть ещё один кандидат поучаствовать в соревновании — http://code.google.com/p/dblinq2007/ Они пытаются повторить функциональность L2S для нескольких серверов и даже вроде как на базе их кода сделана поддержка этого хозяйства в Mono (хотя могу и соврать).


A>Хмм... Последний апдейт — годовалой давности. Стоит ли общаться?


Не стоит, пытался использовать в проекте .. много багов, многое просто не сделано.
Re[7]: Сравнение ORM
От: IT Россия linq2db.com
Дата: 04.09.09 13:58
Оценка:
Здравствуйте, achmed, Вы писали:

A>Не стоит, пытался использовать в проекте .. много багов, многое просто не сделано.


Это не удивительно. Я как-то глянул их код, там классический закат солнца в ручную. Такие задачи так не решаются. Тем не менее, кому-то это может быть интересно, тем болеее, если они идут в Моно.
Если нам не помогут, то мы тоже никого не пощадим.
Re[11]: Сравнение ORM
От: IT Россия linq2db.com
Дата: 04.09.09 18:16
Оценка:
Здравствуйте, alexyakunin, Вы писали:

A>Посмотрите сейчас на новые тесты на paging. Они в основном зависят от Query & Materialization performance. Хотя не только, конечно. Оказалось, большинство участников реализует .Take неэффективно (с ROWNUMBER), и результат — налицо.


Кстати, а как можно сравнить эффективность генерируемого SQL? Это ведь тоже важный аспект. Материализация — это нагрузка на клиета, а вот SQL — это уже удар по серверу БД.
Если нам не помогут, то мы тоже никого не пощадим.
Re: Сравнение ORM
От: SpLove Россия  
Дата: 05.09.09 04:53
Оценка:
Здравствуйте, AlexGX, Вы писали:

AGX>Добрый день.


AGX>Недавно на сайте ormbattle.net появилось сравнение производительности популярных .NET ORM. В частности, присутствуют NHibernate, Entity Framework, Open Access и другие. Как думаете, насколько приведенные результаты адекватны?

Я что-то не пойму, а где "знаменитый" LLBLGen Pro ?
Re[12]: Сравнение ORM
От: achmed Удмуртия https://www.linkedin.com/in/nail-achmedzhanov-9907188/
Дата: 06.09.09 06:11
Оценка:
Здравствуйте, IT, Вы писали:

IT>Здравствуйте, alexyakunin, Вы писали:


IT>Кстати, а как можно сравнить эффективность генерируемого SQL? Это ведь тоже важный аспект.

Как минимум возможность указывать хинты в запросах NOLOCK, NOWAIT и пр.
В NH реализовано.
IT>Материализация — это нагрузка на клиета, а вот SQL — это уже удар по серверу БД.
Re[13]: Сравнение ORM
От: IT Россия linq2db.com
Дата: 06.09.09 15:09
Оценка:
Здравствуйте, achmed, Вы писали:

IT>>Кстати, а как можно сравнить эффективность генерируемого SQL? Это ведь тоже важный аспект.

A>Как минимум возможность указывать хинты в запросах NOLOCK, NOWAIT и пр.
A>В NH реализовано.

Я не об этом. Например, один ORM для Take(10) генерирует TOP 10, а другой вариант, построенный на ROW_NUMBER(), один для string.CompareTo — сложный CASE, а другой — Field > @param, один — вычищает подзапросы по максимуму, а другой создаёт их по делу и без дела.
Если нам не помогут, то мы тоже никого не пощадим.
Re[14]: Сравнение ORM
От: achmed Удмуртия https://www.linkedin.com/in/nail-achmedzhanov-9907188/
Дата: 07.09.09 12:33
Оценка:
Здравствуйте, IT, Вы писали:

IT>Я не об этом. Например, один ORM для Take(10) генерирует TOP 10, а другой вариант, построенный на ROW_NUMBER(), один для string.CompareTo — сложный CASE, а другой — Field > @param, один — вычищает подзапросы по максимуму, а другой создаёт их по делу и без дела.


ИМХО это более интересный показатель нежели скорость материализации.
Только автоматизировать такое сравнение очень сложно .
Re[15]: Сравнение ORM
От: IT Россия linq2db.com
Дата: 07.09.09 17:35
Оценка:
Здравствуйте, achmed, Вы писали:

IT>>Я не об этом. Например, один ORM для Take(10) генерирует TOP 10, а другой вариант, построенный на ROW_NUMBER(), один для string.CompareTo — сложный CASE, а другой — Field > @param, один — вычищает подзапросы по максимуму, а другой создаёт их по делу и без дела.


A>ИМХО это более интересный показатель нежели скорость материализации.


Они обе интересны. Низкая скорость материализации способна легко убить нагруженный сервер приложений.

A>Только автоматизировать такое сравнение очень сложно .


Нужно, чтобы провайдеры хоть каким-то способом умели отдавать SQL и параметры.
Если нам не помогут, то мы тоже никого не пощадим.
Re[16]: Сравнение ORM
От: achmed Удмуртия https://www.linkedin.com/in/nail-achmedzhanov-9907188/
Дата: 08.09.09 03:47
Оценка:
Здравствуйте, IT, Вы писали:

IT>Здравствуйте, achmed, Вы писали:


IT>>>Я не об этом. Например, один ORM для Take(10) генерирует TOP 10, а другой вариант, построенный на ROW_NUMBER(), один для string.CompareTo — сложный CASE, а другой — Field > @param, один — вычищает подзапросы по максимуму, а другой создаёт их по делу и без дела.


A>>ИМХО это более интересный показатель нежели скорость материализации.


IT>Они обе интересны. Низкая скорость материализации способна легко убить нагруженный сервер приложений.

Может, однако чаще проблемы с производительность возникают при обращению к SQL.

A>>Только автоматизировать такое сравнение очень сложно .


IT>Нужно, чтобы провайдеры хоть каким-то способом умели отдавать SQL и параметры.с испр


Можно подойти сбоку, например, с помощью profiler api перехватывать вызовы классов ADO.NET.
Мне бОльшая сложность видится в автоматическом анализе кода SQL.
Re[17]: Сравнение ORM
От: Sinclair Россия https://github.com/evilguest/
Дата: 08.09.09 05:38
Оценка: +1
Здравствуйте, achmed, Вы писали:
A>Можно подойти сбоку, например, с помощью profiler api перехватывать вызовы классов ADO.NET.
A>Мне бОльшая сложность видится в автоматическом анализе кода SQL.
Вот этого — не надо. Автоматический анализ кода SQL здесь крайне противопоказан, по крайней мере — велосипедный.
Вот чем имеет смысл мериться — так это статистикой СУБД.
То есть, берём участников забега №1, 2, 3 и т.п.
Протоколируем исполненный ими SQL.
Прогоняем полученный SQL через SQL Server (отдельно от маппера)
Смотрим Total I/O Cost и Total CPU Cost.
По желанию — смотрим фактическое Total Execution Time.

А сам код SQL анализировать незачем. Там может быть произвольное количество полуслучайных факторов, которые нам неинтересны до тех пор, пока СУБД способна их устранить.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.