Re[17]: вопрос hi_octane про c#
От: Sinclair Россия https://github.com/evilguest/
Дата: 03.09.20 03:42
Оценка: +1
Здравствуйте, alex_public, Вы писали:

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


_>>>И для таких целей в нормальных языках имеется перегрузка операторов. Которая позволяет именно что читабельным образом задавать математику любого уровня сложности. Например если говорить про этот алгоритм, то на каком-нибудь numpy (конечно же скомпилированном с mkl) это и запишется проще и работать будет скорее всего быстрее. )))

S>>Очень может быть. С нетерпением ждём примера С4 с nearest neighbour на языке с перегрузкой операторов.

_>Так зачем мелочиться, вот https://github.com/manuelaguadomtz/pythreshold/blob/master/pythreshold/local_th/sauvola.py тебе пример целиком sauvola, причём для произвольного размера окна.

Да, почти так же просто, как в linq2d.
_>Если же усреднять только по соседям, то код ещё упростится.
Возможно, но не факт.

_>Нет, это ты всё как раз обсуждаешь только вариант с недоверием и плохой производительностью. А для нормальной производительности у тебя должен быть стандартный способ получить sortedArray из array без сортировки. Да, это возможно будет такая "unsafe" операция, но она необходима для возможности написания производительного ПО.

Ну, если удастся доказать, что именно в этом проблема производительности, то можно реализовать и unsafe-конструктор sortedArray из array.

_>Таких библиотек полно и без linq и в более удобном формате. Но они работают только "со своим типом данных". Здесь же речь шла именно о стандартной работе с коллекциями.

Нет такого понятия, как "стандартная работа с коллекциями". Стандартом для linq к базам данных является EF. Это не мешает ему быть унылым говном, а нестандартный linq2db — прекрасная реализация.
Linq — это, по большому счёту, две фичи:
1. Поддержка Expression в языке
2. Поддержка query syntax.
Первое — принципиально, второе — приятная вишенка на торте.

Всё остальное напилено поверх языка, в меру умений программистов и испорченности архитекторов каждой реализации.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[17]: вопрос hi_octane про c#
От: Ночной Смотрящий Россия  
Дата: 03.09.20 08:51
Оценка:
Здравствуйте, alex_public, Вы писали:

НС>>Ты можешь сказать зачем тебе оно? И что принципиально поменяется, если вместо визитора для диспетчеризации по типу узла там используется PM?

_>К теме дискуссии это уже давно никакого отношения не имеет.

Т.е. не можешь. ЧТД.

_> А относилось исключительно к деградации кое-кого тут из технического специалиста в неграмотного тролля. Причём уже до такой степени, когда начинается вещание фантазий.


А начались бредовые фантазии с переходом на личности. Слив засчитан.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[18]: вопрос hi_octane про c#
От: Ночной Смотрящий Россия  
Дата: 03.09.20 08:54
Оценка: +4
Здравствуйте, Sinclair, Вы писали:

S>Linq — это, по большому счёту, две фичи:

S>1. Поддержка Expression в языке
S>2. Поддержка query syntax.

Я бы добавил еще extension methods и anonymous types. Без них linq был бы ужасен.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[19]: вопрос hi_octane про c#
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 03.09.20 09:07
Оценка: -1
Здравствуйте, Ночной Смотрящий, Вы писали:

НС>Здравствуйте, Sinclair, Вы писали:


S>>Linq — это, по большому счёту, две фичи:

S>>1. Поддержка Expression в языке
S>>2. Поддержка query syntax.

НС>Я бы добавил еще extension methods и anonymous types. Без них linq был бы ужасен.


Ну еще и yield!
https://docs.microsoft.com/ru-ru/dotnet/csharp/programming-guide/concepts/linq/deferred-execution-and-lazy-evaluation-in-linq-to-xml
yield одно из значимых внедрений в .Net 2.
и солнце б утром не вставало, когда бы не было меня
Отредактировано 03.09.2020 9:32 Serginio1 . Предыдущая версия .
Re[20]: вопрос hi_octane про c#
От: Ночной Смотрящий Россия  
Дата: 03.09.20 09:21
Оценка:
Здравствуйте, Serginio1, Вы писали:

S> Ну еще и yield!


yield не имеет никакого отношения к линку и появился раньше него.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[21]: вопрос hi_octane про c#
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 03.09.20 09:35
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

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


S>> Ну еще и yield!


НС>yield не имеет никакого отношения к линку и появился раньше него.

Да но он напрополую используется везде, в том числе и Linq.
yield это значимая фишка Linq.
и солнце б утром не вставало, когда бы не было меня
Re[22]: вопрос hi_octane про c#
От: Ночной Смотрящий Россия  
Дата: 03.09.20 12:52
Оценка: :)
Здравствуйте, Serginio1, Вы писали:

S>Да но он напрополую используется везде, в том числе и Linq.


И чо? А еще foreach там используется, причем намного чаще. Это тоже значимая фишка linq?

S>yield это значимая фишка Linq.


Нет.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[23]: вопрос hi_octane про c#
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 03.09.20 13:03
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

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


S>>Да но он напрополую используется везде, в том числе и Linq.


НС>И чо? А еще foreach там используется, причем намного чаще. Это тоже значимая фишка linq?


foreach которые внутри используют yield
S>>yield это значимая фишка Linq.

НС>Нет.

Ну да. То то про ленивость никто даже не заикается?
IEnumerable строится большей частью через foreach и yield с построением автомата на уровне компиляции.
https://mattwarren.org/2016/09/29/Optimising-LINQ/
и солнце б утром не вставало, когда бы не было меня
Отредактировано 03.09.2020 13:16 Serginio1 . Предыдущая версия . Еще …
Отредактировано 03.09.2020 13:12 Serginio1 . Предыдущая версия .
Отредактировано 03.09.2020 13:08 Serginio1 . Предыдущая версия .
Re[24]: вопрос hi_octane про c#
От: Ночной Смотрящий Россия  
Дата: 03.09.20 13:51
Оценка:
Здравствуйте, Serginio1, Вы писали:

НС>>И чо? А еще foreach там используется, причем намного чаще. Это тоже значимая фишка linq?

S>foreach которые внутри используют yield

Или не используют.

S>>>yield это значимая фишка Linq.

НС>>Нет.
S> Ну да. То то про ленивость никто даже не заикается?

Ленивость и yield это разные вещи, особенно в случае IQueryable.

S>IEnumerable строится большей частью через foreach и yield с построением автомата на уровне компиляции.

S>https://mattwarren.org/2016/09/29/Optimising-LINQ/

Ну ты прям КО.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[4]: вопрос hi_octane про c#
От: Философ Ад http://vk.com/id10256428
Дата: 03.09.20 14:52
Оценка: :)
Здравствуйте, Sinclair, Вы писали:

S>>Можно пару нововведений и оптимизации для числодробилок? Речь о языке(сахаре) или о CLR?

S>Обо всём. Там и язык и CLR и JIT допилили.

Можно подробнее про JIT?
У нас
<TargetFrameworkVersion Condition="$(BuildConfiguration) == 'v4.5'">v4.5.1</TargetFrameworkVersion>
<TargetFrameworkVersion Condition="$(BuildConfiguration) == ''">v4.0</TargetFrameworkVersion>

Я периодически вижу ассемблер в дебаггере и там всё так же печально, как и раньше. Детально не анализировал, но паттерны, типа
mov [A],rax
mov rcx,[A]
mov [B],rcx

бросаются в глаза сразу.

Где увидеть оптизации джиттера?
Всё сказанное выше — личное мнение, если не указано обратное.
Re[5]: вопрос hi_octane про c#
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 03.09.20 14:54
Оценка:
Здравствуйте, Философ, Вы писали:

Ф>Где увидеть оптизации джиттера?

http://rsdn.org/forum/dotnet/7776710
Автор: Serginio1
Дата: 13.07.20
и солнце б утром не вставало, когда бы не было меня
Re[17]: вопрос hi_octane про c#
От: vorona  
Дата: 03.09.20 14:57
Оценка: +2
Здравствуйте, alex_public, Вы писали:

_>К теме дискуссии это уже давно никакого отношения не имеет. А относилось исключительно к деградации кое-кого тут из технического специалиста в неграмотного тролля. Причём уже до такой степени, когда начинается вещание фантазий.


Началась все с того, что alex_public заявил:

_>Необходимость создавать дерево, обходить его с помощью рефлексии и генерировать нужный нам код при каждом вызове.

Re[6]: вопрос hi_octane про c#
От: Философ Ад http://vk.com/id10256428
Дата: 03.09.20 14:59
Оценка:
Здравствуйте, Serginio1, Вы писали:

S>Здравствуйте, Философ, Вы писали:


Ф>>Где увидеть оптизации джиттера?

S>http://rsdn.org/forum/dotnet/7776710
Автор: Serginio1
Дата: 13.07.20


Per the .NET roadmap, .NET 5 is scheduled to be released in November 2020


Хочешь сказать, что я должен верить? Типа увидеть и пощупать пока нельзя, но вот скоро....
Всё сказанное выше — личное мнение, если не указано обратное.
Re[5]: вопрос hi_octane про c#
От: Danchik Украина  
Дата: 03.09.20 15:16
Оценка: 5 (4) +1
Здравствуйте, Философ, Вы писали:

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


S>>>Можно пару нововведений и оптимизации для числодробилок? Речь о языке(сахаре) или о CLR?

S>>Обо всём. Там и язык и CLR и JIT допилили.

Ф>Можно подробнее про JIT?

Ф>У нас
Ф> <TargetFrameworkVersion Condition="$(BuildConfiguration) == 'v4.5'">v4.5.1</TargetFrameworkVersion>
Ф> <TargetFrameworkVersion Condition="$(BuildConfiguration) == ''">v4.0</TargetFrameworkVersion>

Ф>Я периодически вижу ассемблер в дебаггере и там всё так же печально, как и раньше. Детально не анализировал, но паттерны, типа

Ф>mov [A],rax
Ф>mov rcx,[A]
Ф>mov [B],rcx

Ф>бросаются в глаза сразу.


Ф>Где увидеть оптизации джиттера?


https://sharplab.io

Выбери JIT ASM и Release конфигурацию. Играйся на здоровье.
Re[7]: вопрос hi_octane про c#
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 03.09.20 16:37
Оценка:
Здравствуйте, Философ, Вы писали:



Ф>

Ф>Per the .NET roadmap, .NET 5 is scheduled to be released in November 2020


Ф>Хочешь сказать, что я должен верить? Типа увидеть и пощупать пока нельзя, но вот скоро....

Ну скачай превью студию и пробуй.
https://docs.microsoft.com/ru-ru/visualstudio/releases/2019/release-notes-preview#16.8.0-pre.2.1

Можно еще посмотреть CoreRT
https://github.com/dotnet/corert/issues/7200
и солнце б утром не вставало, когда бы не было меня
Отредактировано 03.09.2020 17:02 Serginio1 . Предыдущая версия .
Re[5]: вопрос hi_octane про c#
От: Sinclair Россия https://github.com/evilguest/
Дата: 04.09.20 02:43
Оценка:
Здравствуйте, Философ, Вы писали:

Ф>Я периодически вижу ассемблер в дебаггере и там всё так же печально, как и раньше. Детально не анализировал, но паттерны, типа

Ф>mov [A],rax
Ф>mov rcx,[A]
Ф>mov [B],rcx

Ф>бросаются в глаза сразу.


Ф>Где увидеть оптизации джиттера?

JIT умеет правильно обрабатывать SIMD интринсики, порождая обращения к векторным инструкциям.
JIT умеет устранять проверки выхода за границы диапазона при итерировании по Span<T>.
JIT умеет устранять вызовы конструкторов для value-типов, когда ими параметризован генерик.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[18]: вопрос hi_octane про c#
От: Sharov Россия  
Дата: 04.09.20 12:30
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Linq — это, по большому счёту, две фичи:

S>1. Поддержка Expression в языке
S>2. Поддержка query syntax.
S>Первое — принципиально, второе — приятная вишенка на торте.

Что значит поддержка Expression в языке, это же библиотечный тип просто? Поддержка в языке это как раз query syntax.
Кодом людям нужно помогать!
Re[19]: вопрос hi_octane про c#
От: Danchik Украина  
Дата: 04.09.20 13:29
Оценка: 3 (1) +2
Здравствуйте, Sharov, Вы писали:

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


S>>Linq — это, по большому счёту, две фичи:

S>>1. Поддержка Expression в языке
S>>2. Поддержка query syntax.
S>>Первое — принципиально, второе — приятная вишенка на торте.

S>Что значит поддержка Expression в языке, это же библиотечный тип просто? Поддержка в языке это как раз query syntax.


Именно что поддержка в языке. Следующая конструкция создаст компилятором дерево выражений

Expression<Func<int, boo>> expr = t => t == 1;


Что аналогично вот этому (спасибо что за меня это компилятор делает)

var param = Expression.Parameter(typeof(int), "t");
vat expr = Expression.Lambda<Func<int, boo>>(Expression.Equal(param, Expression.Constant(1)), param);


А для query syntax Expression не важны, их може и не быть, как в случае с IEnumerable<>, IObservable<>
Отредактировано 04.09.2020 13:31 Danchik . Предыдущая версия . Еще …
Отредактировано 04.09.2020 13:30 Danchik . Предыдущая версия .
Re[19]: вопрос hi_octane про c#
От: Sinclair Россия https://github.com/evilguest/
Дата: 05.09.20 13:44
Оценка:
Здравствуйте, Sharov, Вы писали:
S>Что значит поддержка Expression в языке, это же библиотечный тип просто? Поддержка в языке это как раз query syntax.
Поддержка в языке — это возможность передать x => x>a туда, где ожидается Predicate<X>. Без этого не работает вообще ничего, кроме тупого кода типа Linq2Objects.
Query Syntax — ортогонален этой штуке; реально могучие вещи в нём — это SelectMany и поддержка let. Всё остальное — ну, так.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[10]: вопрос hi_octane про c#
От: vdimas Россия  
Дата: 06.09.20 01:16
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Эмм, лучше посмотреть сразу вот сюда
Автор: Sinclair
Дата: 03.08.20
. Это по поводу двумерных массивов и свёрток с ядром.

S>Как раз в "базовой архитектуре" всё хорошо.

1. Я не вижу там поборотого выхода за границы для случаев, когда расстояние до соседа не есть некая константа.
2. И это всё далеко не "базовая архитектура". За потраченную тобой трудоёмкость более-менее приемлемый велосипед можно и на плюсах навертеть.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.