Здравствуйте, Ikemefula, Вы писали:
EP>>Подожди, это же ты сказал что у Java байткод нормальный, что я "мусолю булшит", что нужно сравнивать на одной платформе, и на ней скорость не будет сильно отличаться. Вот я и предлагаю тест на одной платформе I>Тест на одной платформе — это оба компилера писаные именно под эту платформу.
Здравствуйте, Evgeny.Panasyuk, Вы писали:
EP>Сравниваем. Вариант Boost.Range: EP>1. Лаконичнее, красивее. EP>2. Быстрее. Там под копотом кстати те самые итераторы. EP>3. Выдаёт bidirectional последовательность вместо forward/single pass.
1. Нет, полное убожество. Enumerable.Range.Select куда как человечнее.
2. Где замеры скорости?
3. Ок.
4. linq вариант ленивый, а плюсовое убожество?
Здравствуйте, Serginio1, Вы писали:
S>>>Мало того, за кучей может следить GC в отдельном потоке. EP>>Точно — конкурентная гадость, которая скорей всего не lock-free. S>Специально не поленился и поисал для тебя S>http://www.oszone.net/18549/ S>
S> .NET 4.5 мы внесли некоторые изменения для более эффективного использования фрагментов памяти в LOH, особенно в плане того, как мы управляем списком свободной памяти. Изменения относятся к сбору мусора (garbage collection, GC) как на рабочей станции, так и сервере. Но обратите внимание на то, что это не отменяет лимит в 85 000 байтов на размер объекта в LOH.
S>Фоновый GC для сервера В .NET 4 мы включили фоновый GC для рабочих станций. С того времени мы все чаще наблюдаем использование куч с размерами в диапазоне от нескольких до десятков гигабайт. Даже такому оптимизированному параллельному сборщику, как у нас, могут потребоваться секунды на сбор столь больших куч, а значит, потоки приложения будут блокированы примерно на то же время. Введение фонового GC для сервера обеспечивает поддержку нашим серверным сборщиком параллельных процедур сбора. Это сводит к минимуму длительные блокирующие операции сбора мусора, почти не влияя на высокую пропускную способность приложения.
S>Если вы используете серверный GC, вам не нужно ничего делать для того, чтобы задействовать преимущества этой новой функциональности; фоновый GC для сервера выполняется автоматически. Высокоуровневые характеристики фонового GC одинаковы как для клиента, так и для сервера:
S>•в фоне может выполняться только полный GC (объектов поколения 2);
S>•при фоновом GC сжатие не осуществляется;
S>•активный (не в фоне) GC (объектов поколений 0 и 1) возможен в процессе фонового GC. Серверный GC выполняется выделенными серверными GC-потоками;
S>•полностью блокирующий GC также осуществляется выделенными серверными GC-потоками.
А зачем ты привёл это? Оно как-то опровергает мои тезисы?
Здравствуйте, Serginio1, Вы писали:
_>>Так EF же генерирует текстовые запросы, не так ли? ) И этот код кто-то должен был написать. Так же как и в C++ есть аналогичные библиотеки. S>Еще раз Linq это абстракция. Не важно, во что это транслируется
Да, сам Linq (а точнее IEnumerable) — это абстракция (кстати, на мой взгляд весьма сомнительная, но это уже дело вкуса). Только вот сама по себе эта абстракция ничего не может. Чтобы она могла работать с контейнерами, базами данных и т.п. требуется подключение соответствующих библиотек. Так вот в C++ (и не только) есть аналогичные библиотеки с аналогичной функциональностью.
S>На самом деле нужно понять где область применения Net S>В каких приложениях процент проседания на определенных задачах будет минимален. S>1. Декстопные приложения где общее время выполнения кода минимально
У меня на десктопе установлено очень много разного софта из разных областей. Так вот написанных на .net там кажется вообще нет. )))
S>2. Серверные ASP.Net HTTP сервисы WCF
Да, это актуальная область для современного .net, особенно с появлением серверного подмножества .net'a с официальной кроссплатформенностью.
S>3. Сейчас есть возможность создавать кроссплатформенные приложения для мобильных приложений и ASP net
В Xamarin весьма специфическая кроссплатформенность. К примеру GUI надо писать заново под каждую платформу.
Здравствуйте, Klikujiskaaan, Вы писали:
EP>>Сравниваем. Вариант Boost.Range: EP>>1. Лаконичнее, красивее. EP>>2. Быстрее. Там под копотом кстати те самые итераторы. EP>>3. Выдаёт bidirectional последовательность вместо forward/single pass. K>1. Нет, полное убожество. Enumerable.Range.Select куда как человечнее.
Полное убожество это вот это:
from value in values
where value > 5
Select new {value* 111}
А вот это: values | filtered(_1 > 5) | transformed(_1 * 111) — лаконичные пайпы известные всем по работе с консолью
K>2. Где замеры скорости?
Можем замерять — не вопрос. Конкретно в этом пример это моё предположение основанное на том, что я видел результирующий ASM в случае C++.
Помимо этого точно быстрее в случае когда нужно обойти задом наперёд — за счёт двунаправленности.
K>4. linq вариант ленивый, а плюсовое убожество?
Так, давай без эмоций — не серьёзно. Вариант Boost.Range — ленивый и двунаправленный. Если же не делать фильтрацию, то вообще Random Access.
Здравствуйте, Serginio1, Вы писали:
_>>А я разве где-то говорил, что тебе надо переходить на C++ или ещё куда-то? ) S> Раз все находится на одном уровне, то какой язык нужно выбрать? S>Или все таки есть отличия? И вы применяете питон вместо C++.
В начале составляем список языков, которые вообще позволяют решить данную задачу (к примеру для микроконтроллеров там будет всего 1-2 варианта), а потом выбираем из них самое дешёвое (с точки зрения бизнеса) решение.
Здравствуйте, alex_public, Вы писали:
_>Здравствуйте, Klikujiskaaan, Вы писали:
_>>>И в чём отличие от библиотеки? ))) K>>http://stackoverflow.com/questions/3057526/framework-vs-toolkit-vs-library
_>Даже если фреймворк является жирной библиотекой, навязывающей архитектуру приложению, то он всё равно остаётся всего лишь библиотекой. )))
Здравствуйте, Klikujiskaaan, Вы писали:
EP>>А вот это: values | filtered(_1 > 5) | transformed(_1 * 111) — лаконичные пайпы известные всем по работе с консолью K>Кто такие все? Ты про Шеридана и его клуб анонимных любителей линукса?
The pipe operator (|) takes the output (by default, STDOUT) of one command and directs it into the input (by default, STDIN) of another command. For example, the following command sorts a directory:
dir | sort
In this example, both commands start simultaneously, but then the sort command pauses until it receives the dir command's output. The sort command uses the dir command's output as its input, and then sends its output to handle 1 (that is, STDOUT).
Здравствуйте, alex_public, Вы писали:
_>Здравствуйте, Serginio1, Вы писали:
_>>>Так EF же генерирует текстовые запросы, не так ли? ) И этот код кто-то должен был написать. Так же как и в C++ есть аналогичные библиотеки. S>>Еще раз Linq это абстракция. Не важно, во что это транслируется
_>Да, сам Linq (а точнее IEnumerable) — это абстракция (кстати, на мой взгляд весьма сомнительная, но это уже дело вкуса). Только вот сама по себе эта абстракция ничего не может. Чтобы она могла работать с контейнерами, базами данных и т.п. требуется подключение соответствующих библиотек. Так вот в C++ (и не только) есть аналогичные библиотеки с аналогичной функциональностью.
EF. Дай ссылочки посмотреть. А внутри Linq деревья выражений. https://msdn.microsoft.com/ru-ru/library/bb397951.aspx
Я уже приводил ссылки на расширители.
S>>На самом деле нужно понять где область применения Net S>>В каких приложениях процент проседания на определенных задачах будет минимален. S>>1. Декстопные приложения где общее время выполнения кода минимально
_>У меня на десктопе установлено очень много разного софта из разных областей. Так вот написанных на .net там кажется вообще нет. )))
S>>2. Серверные ASP.Net HTTP сервисы WCF
_>Да, это актуальная область для современного .net, особенно с появлением серверного подмножества .net'a с официальной кроссплатформенностью.
S>>3. Сейчас есть возможность создавать кроссплатформенные приложения для мобильных приложений и ASP net
_>В Xamarin весьма специфическая кроссплатформенность. К примеру GUI надо писать заново под каждую платформу.
Ну вроде как тут уже договорились, что для каждого GUI свой интерфейс либо HTML 5
и солнце б утром не вставало, когда бы не было меня
EP>Я вижу огромное количество статей и советов как не обжечься на GC.
Д S>>>>Мало того, за кучей может следить GC в отдельном потоке. EP>>>Точно — конкурентная гадость, которая скорей всего не lock-free. S>> Я давно не интересовался. Меня GC давно не беспокоит. Только вызываю его при работе с ком.
EP>Я тебя поздравляю, действительно есть задачи где от него нет проблем. Я в первом же сообщении этой ветки тебе сказал что сам частенько использую Python.
Ну и? Тогда о чем разговор? S>> Ну так почему столько программистов 1С программирующих на чудовищно медленном интерпретаторе. Значит скорость бизнес слоя в итоге не важна.
EP>И что из этого? EP>Тема вообще не про то что скорость нужна абсолютно везде, зачем ты пытаешься опровергнуть это?
S>>>> На ваши итераторы без слез смотреть тяжело. S>>>>... EP>>>Ты показывал что-то про коллекции? EP>>>Вот пример Boost.Range для коллекций: EP>>>
EP>Сравниваем. Вариант Boost.Range: EP>1. Лаконичнее, красивее. EP>2. Быстрее. Там под копотом кстати те самые итераторы. EP>3. Выдаёт bidirectional последовательность вместо forward/single pass.
Мне все равно. А многие подумают, чего это чувак побитовые операции за операции с массивами применяет.
А насчет быстроты то все зависит от компилятора которые могут в теже итераторы и преобразовываться.
S>>>>>>// Этот запрос получает значения периодического реквизита с ID 9697 в порядке убывания даты, времени, и строки документа S>>>>>>... S>>>>>>Генерируется следующий запрос EP>>>>>Это реализуется и в C++, причём с генерацией текста запроса во время компиляции. Подробнейшим образом обсуждалось вот в этой теме
. S>>>> Генерация текста это далеко от того что называется Linq. В Linq вообще отсутствует понятие текста. EP>>>В результате генерируется текст запроса, так понятнее
В результате генерируется машинный код на сервере. Есть абстракции. Контекс можно подменить и тогда итогом будет совсем другое. S>> В итоге мне наплевать, вто что трансформирутся Linq запрос.
EP>Да тут в принципе тоже, я про текст запрос сказал, для того чтобы подчеркнуть что трансформация происходит на этапе компиляции.
Так я от тебя ссылки и не дождался.
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Serginio1, Вы писали:
_>>Да, сам Linq (а точнее IEnumerable) — это абстракция (кстати, на мой взгляд весьма сомнительная, но это уже дело вкуса). Только вот сама по себе эта абстракция ничего не может. Чтобы она могла работать с контейнерами, базами данных и т.п. требуется подключение соответствующих библиотек. Так вот в C++ (и не только) есть аналогичные библиотеки с аналогичной функциональностью. S> EF. Дай ссылочки посмотреть. А внутри Linq деревья выражений. S>https://msdn.microsoft.com/ru-ru/library/bb397951.aspx S>Я уже приводил ссылки на расширители.
https://github.com/rbock/sqlpp11 — один из вариантов. )
_>>В Xamarin весьма специфическая кроссплатформенность. К примеру GUI надо писать заново под каждую платформу. S>Ну вроде как тут уже договорились, что для каждого GUI свой интерфейс либо HTML 5
Где это "тут" договорились? ) На Qt я создают один и тот же интерфейс (код) и он работает на всех платформах сразу. Причём на каждой из них выглядит родным.
Здравствуйте, Evgeny.Panasyuk, Вы писали:
EP>Здравствуйте, Serginio1, Вы писали:
S>>>>Мало того, за кучей может следить GC в отдельном потоке. EP>>>Точно — конкурентная гадость, которая скорей всего не lock-free. S>>Специально не поленился и поисал для тебя S>>http://www.oszone.net/18549/ S>>
S>> .NET 4.5 мы внесли некоторые изменения для более эффективного использования фрагментов памяти в LOH, особенно в плане того, как мы управляем списком свободной памяти. Изменения относятся к сбору мусора (garbage collection, GC) как на рабочей станции, так и сервере. Но обратите внимание на то, что это не отменяет лимит в 85 000 байтов на размер объекта в LOH.
S>>Фоновый GC для сервера В .NET 4 мы включили фоновый GC для рабочих станций. С того времени мы все чаще наблюдаем использование куч с размерами в диапазоне от нескольких до десятков гигабайт. Даже такому оптимизированному параллельному сборщику, как у нас, могут потребоваться секунды на сбор столь больших куч, а значит, потоки приложения будут блокированы примерно на то же время. Введение фонового GC для сервера обеспечивает поддержку нашим серверным сборщиком параллельных процедур сбора. Это сводит к минимуму длительные блокирующие операции сбора мусора, почти не влияя на высокую пропускную способность приложения.
S>>Если вы используете серверный GC, вам не нужно ничего делать для того, чтобы задействовать преимущества этой новой функциональности; фоновый GC для сервера выполняется автоматически. Высокоуровневые характеристики фонового GC одинаковы как для клиента, так и для сервера:
S>>•в фоне может выполняться только полный GC (объектов поколения 2);
S>>•при фоновом GC сжатие не осуществляется;
S>>•активный (не в фоне) GC (объектов поколений 0 и 1) возможен в процессе фонового GC. Серверный GC выполняется выделенными серверными GC-потоками;
S>>•полностью блокирующий GC также осуществляется выделенными серверными GC-потоками.
EP>А зачем ты привёл это? Оно как-то опровергает мои тезисы?
Про блокировки
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, alex_public, Вы писали:
_>Здравствуйте, Serginio1, Вы писали:
_>>>Да, сам Linq (а точнее IEnumerable) — это абстракция (кстати, на мой взгляд весьма сомнительная, но это уже дело вкуса). Только вот сама по себе эта абстракция ничего не может. Чтобы она могла работать с контейнерами, базами данных и т.п. требуется подключение соответствующих библиотек. Так вот в C++ (и не только) есть аналогичные библиотеки с аналогичной функциональностью. S>> EF. Дай ссылочки посмотреть. А внутри Linq деревья выражений. S>>https://msdn.microsoft.com/ru-ru/library/bb397951.aspx S>>Я уже приводил ссылки на расширители.
_>https://github.com/rbock/sqlpp11 — один из вариантов. )
Спасибо посмотрю. _>>>В Xamarin весьма специфическая кроссплатформенность. К примеру GUI надо писать заново под каждую платформу. S>>Ну вроде как тут уже договорились, что для каждого GUI свой интерфейс либо HTML 5
_>Где это "тут" договорились? ) На Qt я создают один и тот же интерфейс (код) и он работает на всех платформах сразу. Причём на каждой из них выглядит родным.
Там нехило по твоему QT прошлись. Сказав, что это убожество по сравнению с родными инструментами.
Мало того, у меня совсем хреновые формы получаются. Пусть формы проектируют другие. Если, что мне и HTML хватит
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Serginio1, Вы писали:
S>>> Я давно не интересовался. Меня GC давно не беспокоит. Только вызываю его при работе с ком. EP>>Я тебя поздравляю, действительно есть задачи где от него нет проблем. Я в первом же сообщении этой ветки тебе сказал что сам частенько использую Python. S> Ну и? Тогда о чем разговор?
Так я тебе этот вопрос практически в каждом сообщении задаю — к чему ты подводишь? Если к тому что на практике применимы разные языки, с разными технологиями (GC/etc), даже тормозные — так я об этом тебе в первом же ответе сказал.
EP>>Сравниваем. Вариант Boost.Range: EP>>1. Лаконичнее, красивее. EP>>2. Быстрее. Там под копотом кстати те самые итераторы. EP>>3. Выдаёт bidirectional последовательность вместо forward/single pass. S> Мне все равно.
Конечно тебе всё равно. Всё что не восхваляет твой блаб язык и всё что показывает что в других языках есть аналоги на запрошенные тобой фичи, причём местами более мощные — тебе не интересно.
S>А многие подумают, чего это чувак побитовые операции за операции с массивами применяет.
Только первый раз, с непривычки.
LINQ кстати говоря тоже структурно далёк от SQL — от SQL там только ключевые слова. А по сути это монадическая DO-нотация.
S>А насчет быстроты то все зависит от компилятора которые могут в теже итераторы и преобразовываться.
Теоретически может, а на практике это намного тяжелее.
Теоретически, да, сферически компилятор может взять программу на любом языке и выдать супер оптимальный код.
S>>>>> Генерация текста это далеко от того что называется Linq. В Linq вообще отсутствует понятие текста. EP>>>>В результате генерируется текст запроса, так понятнее S> В результате генерируется машинный код на сервере. Есть абстракции. Контекс можно подменить и тогда итогом будет совсем другое.
Так в описываемой мной схеме тоже можно заменить контекст, и тоже итог может быть совсем другими
S>>> В итоге мне наплевать, вто что трансформирутся Linq запрос. EP>>Да тут в принципе тоже, я про текст запрос сказал, для того чтобы подчеркнуть что трансформация происходит на этапе компиляции. S> Так я от тебя ссылки и не дождался.
Я приводил — sqlpp11, первая ссылка в Google, или например на YouTube. Там очень близко к тому что я описал, в том числе есть возможность работать по контейнерам, правда это особо не зачем.
S>>> .NET 4.5 мы внесли некоторые изменения для более эффективного использования фрагментов памяти в LOH, особенно в плане того, как мы управляем списком свободной памяти. Изменения относятся к сбору мусора (garbage collection, GC) как на рабочей станции, так и сервере. Но обратите внимание на то, что это не отменяет лимит в 85 000 байтов на размер объекта в LOH.
Кстати, может ты знаешь, есть ли какая-нибудь нормальная/популярная реализация аналога std::deque для C#/.NET? В той теме так ничего и не привели.
Это по сути random-access последовательность состоящая из chunk'ов фиксированного размера — это позволило бы обходить проблемы с фрагментацией даже на старой LOH стратегии.
S>Сейчас говоря дефрагментирует и LOH
Видимо не по-умолчанию, это к вопросу о настройках
https://msdn.microsoft.com/en-us/library/system.runtime.gcsettings.largeobjectheapcompactionmode%28v=vs.110%29.aspx
The default value of the LargeObjectHeapCompactionMode property is GCLargeObjectHeapCompactionMode.Default, which indicates that the LOH is not compacted during garbage collections.
If you assign the property a value of GCLargeObjectHeapCompactionMode.CompactOnce, the LOH is compacted during the next full blocking garbage collection, and the property value is reset to GCLargeObjectHeapCompactionMode.Default.
И походу нужно каждый раз взводить.
EP>>А зачем ты привёл это? Оно как-то опровергает мои тезисы? S> Про блокировки
Что именно? Вот это? "Точно — конкурентная гадость, которая скорей всего не lock-free."
Там сказано что она lock/wait-free?