Size: a a a

2021 April 04

Dv

Dr. Friedrich von Ne... in pro.net
Cat Gn
Какое ограничение?Код одинаковый, значит работать должен и для классов одинаково
Ты различаешь runtime type и compile-time type?
источник

CG

Cat Gn in pro.net
Dr. Friedrich von Never
Ты различаешь runtime type и compile-time type?
Ну допустим
источник

Dv

Dr. Friedrich von Ne... in pro.net
источник

Dv

Dr. Friedrich von Ne... in pro.net
Вот пример, когда typeof и GetType() возвращают разное для одного и того же рантайм объекта.
источник

CG

Cat Gn in pro.net
Dr. Friedrich von Never
Вот пример, когда typeof и GetType() возвращают разное для одного и того же рантайм объекта.
Ну, а почему будет работать по-разномму?
источник

AK

Andrei Kurosh in pro.net
Cat Gn
Ну, а почему будет работать по-разномму?
Потому что один тип выводится статически из типа переменной, а другой - в рантайме из типа объекта, который в ней лежит
источник

CG

Cat Gn in pro.net
Andrei Kurosh
Потому что один тип выводится статически из типа переменной, а другой - в рантайме из типа объекта, который в ней лежит
Это понятно, но код ассемблера одинаковый для обоих методов🤷‍♂️
https://t.me/pro_net/329400
источник

AK

Andrei Kurosh in pro.net
Cat Gn
Это понятно, но код ассемблера одинаковый для обоих методов🤷‍♂️
https://t.me/pro_net/329400
Тут ты в обоих случаях явно указал тип и компилятор смог соптимизировать
источник

AK

Andrei Kurosh in pro.net
DateTime - структура, у нее не может быть наследников, поэтому можно статически вывести конкретный вариант
источник

Dv

Dr. Friedrich von Ne... in pro.net
Cat Gn
Это понятно, но код ассемблера одинаковый для обоих методов🤷‍♂️
https://t.me/pro_net/329400
А я и говорил, что для структур поведение аналогичное будет.
источник

CG

Cat Gn in pro.net
Andrei Kurosh
DateTime - структура, у нее не может быть наследников, поэтому можно статически вывести конкретный вариант
источник

CG

Cat Gn in pro.net
Я тут нашёл ещё одну статью, в которой говорилось, что при пометке параметра ключевым словом in будет создаваться временная копия ,если структура не readonly
https://devblogs.microsoft.com/premier-developer/the-in-modifier-and-the-readonly-structs-in-c/
Там есть бенчмарки, которые доказывают разницу, но у меня те же тесты показывают одинаковое время. При чем время совпадает с наименьшим временем работы. Ассемблер тоже показывает одинаковый код. Не верить автору или что-то поменялось за пару лет?
https://sharplab.io/#v2:EYLgxg9gTgpgtADwGwBYA0AXEBDAzgWwB8ABAJgEYBYAKGIAYACAZQAtsoAHAGW2ADoASgFcAdhgCW+GAG4a9BsXJ8u4kQEdZ1GttoBmBaQXkA7AwDeNBletXL14vsVIGAFQCeHGAwDiMDO88ASREAMwgACgBZcTAoCAZ8AEoAXgA+BL5ffw8YcMTNGzsrMkMLahtC8usAXxparT0DBmjYiCLzdpsHBlwMKCEwDAYAMWxxKAAbNx4oAHMYJj6BjE7rMoqNhg4ocQA3bAwvWGwAEwgRKYYJ89mr8jQr0geJ3WeUAs2u/VUhgDlzBjzDDSBj1T5fEZjSbTdjzRb9QbhH4MESJBggBgYFjiXB5BhpBj/ZIoj4beo6T7bPYHI4wU7nS4/ADaAF0GAB9E4HbD4hgAUREQikUF4ExggmwInm4XuDHIdDo7IVdESfBcEAAglARW48ppVrYqhtusiNbNZrBZjSAAp4XAwE4AITcADVsBMhLlEgaOkbwcRTAARTXmy008IiGAAd0h4ymMzhS0RKFIiXyFPBVmRwbNFpgVsO4VGcZhcwWSaGE1h5YRGG9fs+60zFWRsFwQgmQ2JdFJzasYWOYBYDCRYhRDFUHK5GGw9b7nzbHaGAGpiSIGMurtX4cs+L9e32AwxF52D5sweeMxsfSax7mw4dbbh7U63ME8j6m5mjznQ/nw5GMbFtCCY1ss4Qpmm+oNps2YhnmBa5JOwHxtuFZbmWO6DHOzZfvOrYwO2na8j2PqfAOdJDiOyLrpOnLcjh84VCeK5rhuGGJrWe5nt+pgsTxFQXmS7T1EAA==
источник

N

Nick in pro.net
Alexey Tkachenko
В гопнете настолько убогие жынерики, что varadic templates не светят от слова совсем. Куда более необходимых вещей и то не хватает.
Да, спасибо, это то, о чем я как раз думал. Жалко, что нет такого, выглядит удобно.
источник

AK

Andrei Kurosh in pro.net
Alexey Tkachenko
В гопнете настолько убогие жынерики, что varadic templates не светят от слова совсем. Куда более необходимых вещей и то не хватает.
Соотношение выхлопа к трудозатратам у этой задачи очень маленькое
источник

AT

Alexey Tkachenko in pro.net
Andrei Kurosh
Соотношение выхлопа к трудозатратам у этой задачи очень маленькое
За отсутствие перегрузки по констрэйнтам я бы задушил дизайнера языка
источник

AT

Alexey Tkachenko in pro.net
И это только малая часть
источник

AT

Alexey Tkachenko in pro.net
SFINAE, переродившееся в концепты, полные и частичные специализации, parameter pack folding и ещё много всего вкусного
источник

AT

Alexey Tkachenko in pro.net
И невозможность дергать операторы
источник

AK

Andrei Kurosh in pro.net
Анекдот такой был - добро пожаловать на борт нашего роскошного самолета. На первой палубе у нас ресторан, на второй - бассейн и тренажерка, на третьей - кинотеатр, на четвертой - торговый центр. А теперь мы попробуем со всей этой херней взлететь
источник

Dv

Dr. Friedrich von Ne... in pro.net
Cat Gn
Я тут нашёл ещё одну статью, в которой говорилось, что при пометке параметра ключевым словом in будет создаваться временная копия ,если структура не readonly
https://devblogs.microsoft.com/premier-developer/the-in-modifier-and-the-readonly-structs-in-c/
Там есть бенчмарки, которые доказывают разницу, но у меня те же тесты показывают одинаковое время. При чем время совпадает с наименьшим временем работы. Ассемблер тоже показывает одинаковый код. Не верить автору или что-то поменялось за пару лет?
https://sharplab.io/#v2:EYLgxg9gTgpgtADwGwBYA0AXEBDAzgWwB8ABAJgEYBYAKGIAYACAZQAtsoAHAGW2ADoASgFcAdhgCW+GAG4a9BsXJ8u4kQEdZ1GttoBmBaQXkA7AwDeNBletXL14vsVIGAFQCeHGAwDiMDO88ASREAMwgACgBZcTAoCAZ8AEoAXgA+BL5ffw8YcMTNGzsrMkMLahtC8usAXxparT0DBmjYiCLzdpsHBlwMKCEwDAYAMWxxKAAbNx4oAHMYJj6BjE7rMoqNhg4ocQA3bAwvWGwAEwgRKYYJ89mr8jQr0geJ3WeUAs2u/VUhgDlzBjzDDSBj1T5fEZjSbTdjzRb9QbhH4MESJBggBgYFjiXB5BhpBj/ZIoj4beo6T7bPYHI4wU7nS4/ADaAF0GAB9E4HbD4hgAUREQikUF4ExggmwInm4XuDHIdDo7IVdESfBcEAAglARW48ppVrYqhtusiNbNZrBZjSAAp4XAwE4AITcADVsBMhLlEgaOkbwcRTAARTXmy008IiGAAd0h4ymMzhS0RKFIiXyFPBVmRwbNFpgVsO4VGcZhcwWSaGE1h5YRGG9fs+60zFWRsFwQgmQ2JdFJzasYWOYBYDCRYhRDFUHK5GGw9b7nzbHaGAGpiSIGMurtX4cs+L9e32AwxF52D5sweeMxsfSax7mw4dbbh7U63ME8j6m5mjznQ/nw5GMbFtCCY1ss4Qpmm+oNps2YhnmBa5JOwHxtuFZbmWO6DHOzZfvOrYwO2na8j2PqfAOdJDiOyLrpOnLcjh84VCeK5rhuGGJrWe5nt+pgsTxFQXmS7T1EAA==
А ты IL-код сравнивай. Там будет копия.
источник