Re[137]: Тормознутость и кривость linq
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 01.07.16 19:25
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

Кстати посоветуй как мне скомпилировать по Linux. В VS C++ что то кроме win 32 не нашел.
Я так понимаю https://visualstudiogallery.msdn.microsoft.com/725025cf-7067-45c2-8d01-1e0fd359ae6e
И можно как то сэмулировать работу под Linux?
и солнце б утром не вставало, когда бы не было меня
Отредактировано 01.07.2016 19:27 Serginio1 . Предыдущая версия .
Re[138]: Тормознутость и кривость linq
От: Evgeny.Panasyuk Россия  
Дата: 01.07.16 19:47
Оценка: 2 (1)
Здравствуйте, Serginio1, Вы писали:

S>Кстати посоветуй как мне скомпилировать по Linux. В VS C++ что то кроме win 32 не нашел.


Что конкретно скомпилировать? Для кросс-платформенной разработки я использую CMake — из единой модели проекта он генерирует и проекты MSVS, и Makefile под Linux/OS X (где используется GCC/Clang), и проекты под некоторые другие IDE.
Задавай полный вопрос в профильном форуме.
Re[120]: Тормознутость и кривость linq
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 01.07.16 19:54
Оценка:
Здравствуйте, IT, Вы писали:

_>>В приведённом тобой тесте идёт сравнение исполнения через linq2db запроса записанного через linq с исполнением через ADO запроса записанного текстовой строкой. Такое сравнение не может быть использовано при обсуждение вопроса накладных расходов вносимых записью запроса через linq (почему подробно объяснено в предыдущих сообщениях данной темы).


IT> Ты же когда говорил про 90% сравнивал LINQ именно с ADO.NET, а теперь вдруг ловишь меня на нечестности. Я даже одной секунды на эту фигню тратить не буду. Тем более, что результат будет ещё больше в пользу LINQ.


Хрен с ней, с этой нечесностью. Сделай, пожалуйста, аналог своего последнего теста только на linq raw sql ? Сильно вопрос интересный, на самом деле. В тестах liiw похоже есть не то косячок, не то они безбожно устарели. Я бы и сам померял, но нынче я в текстовом редакторе считай живу.
Re[139]: Тормознутость и кривость linq
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 01.07.16 20:46
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

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


S>>Кстати посоветуй как мне скомпилировать по Linux. В VS C++ что то кроме win 32 не нашел.


EP>Что конкретно скомпилировать? Для кросс-платформенной разработки я использую CMake — из единой модели проекта он генерирует и проекты MSVS, и Makefile под Linux/OS X (где используется GCC/Clang), и проекты под некоторые другие IDE.

EP>Задавай полный вопрос в профильном форуме.

Можно ссылочки на статьи, что бы не тратить время. И может есть виртуальная машина под линукс для проверки?
и солнце б утром не вставало, когда бы не было меня
Re[140]: Тормознутость и кривость linq
От: Evgeny.Panasyuk Россия  
Дата: 01.07.16 20:58
Оценка: 2 (1)
Здравствуйте, Serginio1, Вы писали:

EP>>Что конкретно скомпилировать? Для кросс-платформенной разработки я использую CMake — из единой модели проекта он генерирует и проекты MSVS, и Makefile под Linux/OS X (где используется GCC/Clang), и проекты под некоторые другие IDE.

EP>>Задавай полный вопрос в профильном форуме.
S> Можно ссылочки на статьи, что бы не тратить время.

Я пользуюсь в основном официальной документацией. Статьи смотри по ключевым словам "CMake tutorial"

S>И может есть виртуальная машина под линукс для проверки?


Для проверки чего?
Re[141]: Тормознутость и кривость linq
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 01.07.16 21:03
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

S>>И может есть виртуальная машина под линукс для проверки?


EP>Для проверки чего?

Ну например под WM и Android есть виртуальные машины для запуска и отладки приложений под Windows
и солнце б утром не вставало, когда бы не было меня
Re[139]: Тормознутость и кривость linq
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 01.07.16 21:06
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

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


EP>>>Тип в который в том числе закодировано дерево выражения. На C++ это реализуется с помощью техники Expression Templates, которой уже более двадцати лет.

G>>Показывай минимально работающий пример, который обходит дерево и строит SQL.

EP>Показывающий что конкретно? Проекции? Фильтры? Автоматические join'ы по связям?

Фильтры и проекции, с джоинами потом разберемся

EP>Это всё ни одна сотня строк кода, реализовать которые мне не интересно.

Тогда какой смысл в том, что ты пишешь? На практике никто такое не сделал, значит невозможно. Иначе уже была бы реализован аналог linq на C++.

G>>Потому что построить дерево на шаблонах несложно. Самое интересное начинается дальше.

EP>Что именно тебя смущает? Говори конкретный аспект и я расскажу (и возможно покажу) каким образом он реализуется
Меня смущает, что ты каждый раз даешь пример одного аспекта, а не все вместе. Похоже что все вместе не взлетит от слова вообще.

G>>Кроме того сразу видна проблема. У тебя слишком коноетный тип

EP>Это плата за статику.
И как будешь разруливать?

G>>, композицию сложно будет делать.

G>>То есть from | where | select имеет тип select<where<from>>, как написать аналог функции
G>>
G>>IQueryable<User> Active(this IQueryable<User> src) => src.Where(u => u.IsActive)
G>>

G>>?
G>>IQueryable может быть и результатом проекции, фильтра, группировки, чего угодно по сути.
EP>Пример на эту тему я уже показал выше
Автор: Evgeny.Panasyuk
Дата: 01.07.16
.

Ты предлагаешь писать свой where к каждому типу?
Это неживая идея изначально.
Re[142]: Тормознутость и кривость linq
От: Evgeny.Panasyuk Россия  
Дата: 01.07.16 21:30
Оценка:
Здравствуйте, Serginio1, Вы писали:

S>>>И может есть виртуальная машина под линукс для проверки?

EP>>Для проверки чего?
S> Ну например под WM и Android есть виртуальные машины для запуска и отладки приложений под Windows

А тебя для чего конкретно нужно? Во всех современных дистрибутивах компилятор C++ и CMake ставятся одной командой пакетного менеджера.
Re[140]: Тормознутость и кривость linq
От: Evgeny.Panasyuk Россия  
Дата: 01.07.16 21:53
Оценка:
Здравствуйте, gandjustas, Вы писали:

EP>>>>Тип в который в том числе закодировано дерево выражения. На C++ это реализуется с помощью техники Expression Templates, которой уже более двадцати лет.

G>>>Показывай минимально работающий пример, который обходит дерево и строит SQL.
EP>>Показывающий что конкретно? Проекции? Фильтры? Автоматические join'ы по связям?
G>Фильтры и проекции, с джоинами потом разберемся

То есть после примера с фильтрами и проекциями ты скажешь что мол нет джоинов, того и того, поэтому нещитово и вообще "невозможно"

EP>>Это всё ни одна сотня строк кода, реализовать которые мне не интересно.

G>Тогда какой смысл в том, что ты пишешь?

Что значит какой? Я утверждаю что это вполне реализуемо, то есть все технические возможности в наличии.
Некоторые же из собравшихся считают что нет, мол проекции не реализуются, статическая декомпозиция "никому не удавалась" — я в ответ показываю конкретные компилируемые примеры.

G>На практике никто такое не сделал, значит невозможно.


Нет, не значит, очевидно же.

G>Иначе уже была бы реализован аналог linq на C++.


Альтернативы есть, пусть и не 1-в-1 аналогичные по замыслу, но тем не менее. Тот же sqlpp11.

G>>>Потому что построить дерево на шаблонах несложно. Самое интересное начинается дальше.

EP>>Что именно тебя смущает? Говори конкретный аспект и я расскажу (и возможно покажу) каким образом он реализуется
G>Меня смущает, что ты каждый раз даешь пример одного аспекта, а не все вместе.

Потому что это требует меньше времени на реализацию, и является ответом на конкретное сомнение, например как в случае с проекциями.

G>Похоже что все вместе не взлетит от слова вообще.


EDSL'ей для C++ много разных, в том числе и на тему SQL, метапрограммирование полное по Тьюрингу, есть compile-time обработка и генерация строк — то есть всё необходимое.
Ты же естественно можешь думать что тебе хочется

G>>>Кроме того сразу видна проблема. У тебя слишком коноетный тип

EP>>Это плата за статику.
G>И как будешь разруливать?

Разруливать что именно?

EP>>Пример на эту тему я уже показал выше
Автор: Evgeny.Panasyuk
Дата: 01.07.16
.

G>Ты предлагаешь писать свой where к каждому типу?
G>Это неживая идея изначально.

В каком смысле "к каждому"?
Re[143]: Тормознутость и кривость linq
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 01.07.16 21:54
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

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


S>>>>И может есть виртуальная машина под линукс для проверки?

EP>>>Для проверки чего?
S>> Ну например под WM и Android есть виртуальные машины для запуска и отладки приложений под Windows

EP>А тебя для чего конкретно нужно? Во всех современных дистрибутивах компилятор C++ и CMake ставятся одной командой пакетного менеджера.

Я же тебе приводил ссылки на кроссплатформенность .Net и использование иго в нативе. Там примеры используют кроссплатформенную .Net Core. Хотелось бы проверить их работу под Linux.
и солнце б утром не вставало, когда бы не было меня
Re[144]: Тормознутость и кривость linq
От: Evgeny.Panasyuk Россия  
Дата: 01.07.16 21:59
Оценка:
Здравствуйте, Serginio1, Вы писали:

EP>>А тебя для чего конкретно нужно? Во всех современных дистрибутивах компилятор C++ и CMake ставятся одной командой пакетного менеджера.

S> Я же тебе приводил ссылки на кроссплатформенность .Net и использование иго в нативе. Там примеры используют кроссплатформенную .Net Core. Хотелось бы проверить их работу под Linux.

А с чего ты взял что у меня есть VM с настроенной .NET Core под Linux? И как это вообще связанно с темой про LINQ?
Re[145]: Тормознутость и кривость linq
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 01.07.16 22:03
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

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


EP>>>А тебя для чего конкретно нужно? Во всех современных дистрибутивах компилятор C++ и CMake ставятся одной командой пакетного менеджера.

S>> Я же тебе приводил ссылки на кроссплатформенность .Net и использование иго в нативе. Там примеры используют кроссплатформенную .Net Core. Хотелось бы проверить их работу под Linux.

EP>А с чего ты взял что у меня есть VM с настроенной .NET Core под Linux? И как это вообще связанно с темой про LINQ?

Ты спросил зачем это нужно, я ответил. Меня сейчас этот аспект интересует. Можно ли установить виртуальную машину Linux на виндовс?
Ну извини, что задал тебе вопрос.
и солнце б утром не вставало, когда бы не было меня
Re[121]: Тормознутость и кривость linq
От: IT Россия linq2db.com
Дата: 01.07.16 22:09
Оценка: 3 (1)
Здравствуйте, Ikemefula, Вы писали:

I>Хрен с ней, с этой нечесностью. Сделай, пожалуйста, аналог своего последнего теста только на linq raw sql ? Сильно вопрос интересный, на самом деле. В тестах liiw похоже есть не то косячок, не то они безбожно устарели. Я бы и сам померял, но нынче я в текстовом редакторе считай живу.


Добавил, начало скакать туда сюда, пришлось увеличить количество итераций и нивелировать порядок выполнения. Получилось так:

LINQ: 1000000 in 00:00:56.0547832
ADO:  1000000 in 00:00:49.1683344
SQL:  1000000 in 00:00:48.4624714
Если нам не помогут, то мы тоже никого не пощадим.
Re[146]: Тормознутость и кривость linq
От: Evgeny.Panasyuk Россия  
Дата: 01.07.16 22:15
Оценка: 3 (1)
Здравствуйте, Serginio1, Вы писали:

S>Меня сейчас этот аспект интересует. Можно ли установить виртуальную машину Linux на виндовс?


Да, можно. Например скачай VirtualBox, скачай iso-образ нужного дистрибутива Linux, создай виртуальную машину в VirtualBox с помощью мастера, укажи путь к iso, запусти её — далее начнётся процесс установки.

S>Ну извини, что задал тебе вопрос.


Без проблем, только не в этой теме — это совсем оффтопик.
Re[147]: Тормознутость и кривость linq
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 01.07.16 22:42
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:



EP>Без проблем, только не в этой теме — это совсем оффтопик.

Ну вроде как ведем беседу, а прежде чем отдельно топик заводить, хотелось разобраться.
Еще раз спасибо.
и солнце б утром не вставало, когда бы не было меня
Re[120]: Тормознутость и кривость linq
От: alex_public  
Дата: 02.07.16 03:52
Оценка: +1
Здравствуйте, Ikemefula, Вы писали:

I>Тебе сто раз дали ответ. В тестах __типичный__ код. Никто и никогда не мапит индексами. Даже полные дебилы не занимают такой хренью.


Ты так и не понял? ) Никто не предлагает переписать на ADO с индексами. Предлагается выкинуть ADO вообще. Потому что для оценки накладных расходов от использования Linq разница в коде должна быть только в записи самого запроса, а всё остальное должно быть строго одинаковым.

I>Ты видел когда нибудь типичный код на ADO ? Сколько раз ты видел мапинг индексами а не именами ? В продакше, а не твоих наколеночных поделках.


Кстати говоря, это общеизвестная задачка (она же везде встречается), которая имеет множество удобных готовых решений во всех языках и платформах. ))) И в .net'е естественно тоже есть цела куча готовых инструментов на эту тему. ADO с индексами — это просто самый низкий уровень (но при этом эффективный), поверх которого можно накручивать любые удобства.
Re[117]: Тормознутость и кривость linq
От: alex_public  
Дата: 02.07.16 03:54
Оценка:
Здравствуйте, Ikemefula, Вы писали:

_>>ОК, тогда всё понятно. ) Значит у тебя просто своя личная альтернативная терминология по этому вопросу. Тогда у нас собственно и нет никакого спора (по терминлогиям споров быть не может — о них просто договариваются и всё).

I>https://www.google.by/webhp?sourceid=chrome-instant&amp;ion=1&amp;espv=2&amp;ie=UTF-8#q=dapper+micro+orm

Так всё же это ORM или нет? ) Или "micro orm" — это у нас теперь не "orm"? ))) Ты уж определись... )))
Re[130]: Тормознутость и кривость linq
От: alex_public  
Дата: 02.07.16 03:59
Оценка: +1
Здравствуйте, IT, Вы писали:

_>>Хорошо, переформулирую твоими же словами. ))) Можно получить type safety, но без накладных расходов в рантайме. )

IT>Тебе уже сто раз объясняли, что без накладных не получится. Во-первых, в зависимости от значения параметра запрос нужно будет перестраивать. Во-вторых, совсем совсем статические запросы — это далеко не все запросы в приложении. Часто приходится формировать запросы динамически. А это означает, что во время компиляции тебе придётся не готовый SQL формировать на выходе, а в лучшем случае некий SQL AST, по сути тот же Expression Tree и потом разбирать его в runtime.

Эм, под накладными расходами естественно подразумеваются лишние (ненужные для достижения цели) расходы. Если у нас динамический запрос, то очевидно что необходимость его формирования в рантайме — это необходимая задача, так что накладные расходы рассчитываются относительно уже такого кода склейки строк. Но я здесь уже демонстрировал, что переход к динамике (т.е. формирования строки запроса в рантайме, в зависимости от каких-то внешних условий) добавляет незначительные временные затраты (в моём тесте речь шла о паре микросекунд), несравнимые с накладными расходами от использования того же linq.
Re[126]: Тормознутость и кривость linq
От: alex_public  
Дата: 02.07.16 04:21
Оценка:
Здравствуйте, IT, Вы писали:

_>>Ну почему же, вполне себе в нашей общей: http://www.tiobe.com/tiobe_index?page=index. О, я смотрю уже и мой любимый Питончик обошёл C#, забавненько... )))

IT>Эти тесты похоже из твоей же реальности.

Если ты готов предоставить другой, более авторитетный источник подобной статистики, то я с удовольствием посмотрю на него и возможно буду пользоваться. Ну а если ты не готов предложить ничего подобного, то тогда твоя критика данного проекта никому не интересна.

IT>Например, я уже лет 8 не видел и ничего не слыашал о таком редком звере как VB девелопер. А здесь он аж в десятке. О VB много пишут, это да, но пишут _о_ нём, а не _на_ нём.


Опять же повторюсь, не стоит мерить всех по своему уютному мирку. Я вот например тоже никогда в жизни не видел разработчика на Кобол (а оно есть в данном рейтинге в первой 20-ке), однако при этом в курсе, что до сих пор существуют громадные работающие на нём системы, которые требуют поддержки и развития. Подобные знания — это всего лишь минимальный технический кругозор в отрасли. )

Что касается VB, то с ним плотно работают многие глубоко погружённые в Excel, Word и т.п. Я даже видел целые сложные бухгалтерии, работающие на нём. Кроме того, оно использовалось с аналогичными целями в AutoCAD, SolidWorks, CorelDraw и т.п., правда там это был всего лишь один из возможных языков (лично я бы его не выбрал), но с учётом популярности самих этих инструментов наверняка и там не мало пользователей VB. Ну и кстати последняя версия (VB7) вроде как вышла в 2010-ом Офисе, так что твои слова о 8 годах опять же свидетельствуют о твоём кругозоре. )

IT>К тому же я ещё не разу не видел, чтобы C# шёл в рост. Он всё время падает с самого свого рождения. Т.е. с самого нуля падает и пока ещё до нуля не упал. Как такое может быть не пойму. Видимо в ваших реальностях это нормально.


Ну почему же) Если глянуть сюда http://www.tiobe.com/tiobe_index?page=C%23, то чётко видна явная тенденция роста до 2012-го года, а потом точно такая же явная тендеция спада.
Отредактировано 02.07.2016 4:31 alex_public . Предыдущая версия .
Re[120]: Тормознутость и кривость linq
От: alex_public  
Дата: 02.07.16 04:35
Оценка:
Здравствуйте, IT, Вы писали:

_>>В приведённом тобой тесте идёт сравнение исполнения через linq2db запроса записанного через linq с исполнением через ADO запроса записанного текстовой строкой. Такое сравнение не может быть использовано при обсуждение вопроса накладных расходов вносимых записью запроса через linq (почему подробно объяснено в предыдущих сообщениях данной темы).

IT> Ты же когда говорил про 90% сравнивал LINQ именно с ADO.NET, а теперь вдруг ловишь меня на нечестности. Я даже одной секунды на эту фигню тратить не буду. Тем более, что результат будет ещё больше в пользу LINQ.

И где это я сравнивал с ADO? ) Раз ты делаешь подобные утверждения, то будь любезен продемонстрировать соответствующую цитату.

Я же в свою очередь могу продемонстрировать множество цитат в данной теме, где я как раз говорил о необходимости сравнения linq и row sql подходов.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.