Здравствуйте, Serginio1, Вы писали:
S>Кстати посоветуй как мне скомпилировать по Linux. В VS C++ что то кроме win 32 не нашел.
Что конкретно скомпилировать? Для кросс-платформенной разработки я использую CMake — из единой модели проекта он генерирует и проекты MSVS, и Makefile под Linux/OS X (где используется GCC/Clang), и проекты под некоторые другие IDE.
Задавай полный вопрос в профильном форуме.
Здравствуйте, IT, Вы писали:
_>>В приведённом тобой тесте идёт сравнение исполнения через linq2db запроса записанного через linq с исполнением через ADO запроса записанного текстовой строкой. Такое сравнение не может быть использовано при обсуждение вопроса накладных расходов вносимых записью запроса через linq (почему подробно объяснено в предыдущих сообщениях данной темы).
IT> Ты же когда говорил про 90% сравнивал LINQ именно с ADO.NET, а теперь вдруг ловишь меня на нечестности. Я даже одной секунды на эту фигню тратить не буду. Тем более, что результат будет ещё больше в пользу LINQ.
Хрен с ней, с этой нечесностью. Сделай, пожалуйста, аналог своего последнего теста только на linq raw sql ? Сильно вопрос интересный, на самом деле. В тестах liiw похоже есть не то косячок, не то они безбожно устарели. Я бы и сам померял, но нынче я в текстовом редакторе считай живу.
Здравствуйте, Evgeny.Panasyuk, Вы писали:
EP>Здравствуйте, Serginio1, Вы писали:
S>>Кстати посоветуй как мне скомпилировать по Linux. В VS C++ что то кроме win 32 не нашел.
EP>Что конкретно скомпилировать? Для кросс-платформенной разработки я использую CMake — из единой модели проекта он генерирует и проекты MSVS, и Makefile под Linux/OS X (где используется GCC/Clang), и проекты под некоторые другие IDE. EP>Задавай полный вопрос в профильном форуме.
Можно ссылочки на статьи, что бы не тратить время. И может есть виртуальная машина под линукс для проверки?
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Serginio1, Вы писали:
EP>>Что конкретно скомпилировать? Для кросс-платформенной разработки я использую CMake — из единой модели проекта он генерирует и проекты MSVS, и Makefile под Linux/OS X (где используется GCC/Clang), и проекты под некоторые другие IDE. EP>>Задавай полный вопрос в профильном форуме. S> Можно ссылочки на статьи, что бы не тратить время.
Я пользуюсь в основном официальной документацией. Статьи смотри по ключевым словам "CMake tutorial"
S>И может есть виртуальная машина под линукс для проверки?
Здравствуйте, Evgeny.Panasyuk, Вы писали:
S>>И может есть виртуальная машина под линукс для проверки?
EP>Для проверки чего?
Ну например под WM и Android есть виртуальные машины для запуска и отладки приложений под Windows
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, 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>>
Здравствуйте, Serginio1, Вы писали:
S>>>И может есть виртуальная машина под линукс для проверки? EP>>Для проверки чего? S> Ну например под WM и Android есть виртуальные машины для запуска и отладки приложений под Windows
А тебя для чего конкретно нужно? Во всех современных дистрибутивах компилятор C++ и CMake ставятся одной командой пакетного менеджера.
Здравствуйте, 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, Вы писали:
EP>Здравствуйте, Serginio1, Вы писали:
S>>>>И может есть виртуальная машина под линукс для проверки? EP>>>Для проверки чего? S>> Ну например под WM и Android есть виртуальные машины для запуска и отладки приложений под Windows
EP>А тебя для чего конкретно нужно? Во всех современных дистрибутивах компилятор C++ и CMake ставятся одной командой пакетного менеджера.
Я же тебе приводил ссылки на кроссплатформенность .Net и использование иго в нативе. Там примеры используют кроссплатформенную .Net Core. Хотелось бы проверить их работу под Linux.
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Serginio1, Вы писали:
EP>>А тебя для чего конкретно нужно? Во всех современных дистрибутивах компилятор C++ и CMake ставятся одной командой пакетного менеджера. S> Я же тебе приводил ссылки на кроссплатформенность .Net и использование иго в нативе. Там примеры используют кроссплатформенную .Net Core. Хотелось бы проверить их работу под Linux.
А с чего ты взял что у меня есть VM с настроенной .NET Core под Linux? И как это вообще связанно с темой про LINQ?
Здравствуйте, Evgeny.Panasyuk, Вы писали:
EP>Здравствуйте, Serginio1, Вы писали:
EP>>>А тебя для чего конкретно нужно? Во всех современных дистрибутивах компилятор C++ и CMake ставятся одной командой пакетного менеджера. S>> Я же тебе приводил ссылки на кроссплатформенность .Net и использование иго в нативе. Там примеры используют кроссплатформенную .Net Core. Хотелось бы проверить их работу под Linux.
EP>А с чего ты взял что у меня есть VM с настроенной .NET Core под Linux? И как это вообще связанно с темой про LINQ?
Ты спросил зачем это нужно, я ответил. Меня сейчас этот аспект интересует. Можно ли установить виртуальную машину Linux на виндовс?
Ну извини, что задал тебе вопрос.
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, 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
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, Serginio1, Вы писали:
S>Меня сейчас этот аспект интересует. Можно ли установить виртуальную машину Linux на виндовс?
Да, можно. Например скачай VirtualBox, скачай iso-образ нужного дистрибутива Linux, создай виртуальную машину в VirtualBox с помощью мастера, укажи путь к iso, запусти её — далее начнётся процесс установки.
S>Ну извини, что задал тебе вопрос.
Без проблем, только не в этой теме — это совсем оффтопик.
EP>Без проблем, только не в этой теме — это совсем оффтопик.
Ну вроде как ведем беседу, а прежде чем отдельно топик заводить, хотелось разобраться.
Еще раз спасибо.
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Ikemefula, Вы писали:
I>Тебе сто раз дали ответ. В тестах __типичный__ код. Никто и никогда не мапит индексами. Даже полные дебилы не занимают такой хренью.
Ты так и не понял? ) Никто не предлагает переписать на ADO с индексами. Предлагается выкинуть ADO вообще. Потому что для оценки накладных расходов от использования Linq разница в коде должна быть только в записи самого запроса, а всё остальное должно быть строго одинаковым.
I>Ты видел когда нибудь типичный код на ADO ? Сколько раз ты видел мапинг индексами а не именами ? В продакше, а не твоих наколеночных поделках.
Кстати говоря, это общеизвестная задачка (она же везде встречается), которая имеет множество удобных готовых решений во всех языках и платформах. ))) И в .net'е естественно тоже есть цела куча готовых инструментов на эту тему. ADO с индексами — это просто самый низкий уровень (но при этом эффективный), поверх которого можно накручивать любые удобства.
Здравствуйте, IT, Вы писали:
_>>Хорошо, переформулирую твоими же словами. ))) Можно получить type safety, но без накладных расходов в рантайме. ) IT>Тебе уже сто раз объясняли, что без накладных не получится. Во-первых, в зависимости от значения параметра запрос нужно будет перестраивать. Во-вторых, совсем совсем статические запросы — это далеко не все запросы в приложении. Часто приходится формировать запросы динамически. А это означает, что во время компиляции тебе придётся не готовый SQL формировать на выходе, а в лучшем случае некий SQL AST, по сути тот же Expression Tree и потом разбирать его в runtime.
Эм, под накладными расходами естественно подразумеваются лишние (ненужные для достижения цели) расходы. Если у нас динамический запрос, то очевидно что необходимость его формирования в рантайме — это необходимая задача, так что накладные расходы рассчитываются относительно уже такого кода склейки строк. Но я здесь уже демонстрировал, что переход к динамике (т.е. формирования строки запроса в рантайме, в зависимости от каких-то внешних условий) добавляет незначительные временные затраты (в моём тесте речь шла о паре микросекунд), несравнимые с накладными расходами от использования того же linq.
Здравствуйте, 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-го года, а потом точно такая же явная тендеция спада.
Здравствуйте, IT, Вы писали:
_>>В приведённом тобой тесте идёт сравнение исполнения через linq2db запроса записанного через linq с исполнением через ADO запроса записанного текстовой строкой. Такое сравнение не может быть использовано при обсуждение вопроса накладных расходов вносимых записью запроса через linq (почему подробно объяснено в предыдущих сообщениях данной темы). IT> Ты же когда говорил про 90% сравнивал LINQ именно с ADO.NET, а теперь вдруг ловишь меня на нечестности. Я даже одной секунды на эту фигню тратить не буду. Тем более, что результат будет ещё больше в пользу LINQ.
И где это я сравнивал с ADO? ) Раз ты делаешь подобные утверждения, то будь любезен продемонстрировать соответствующую цитату.
Я же в свою очередь могу продемонстрировать множество цитат в данной теме, где я как раз говорил о необходимости сравнения linq и row sql подходов.