Size: a a a

2020 June 29

m

magras in pro.cxx
Андрей Руссков
рантайм полиморфизм в принципе не может быть zero cost abstraction
Я о том, что если я работаю с конкретным типом объекта в котором в начале лежит vtable я вероятно потрачу место в cache line на его загрузку, хотя мне он сейчас не нужен.
источник

АР

Андрей Руссков... in pro.cxx
Обычно класс делается виртуальным когда это таки нужно.
источник

АР

Андрей Руссков... in pro.cxx
плюс удобство
источник

m

magras in pro.cxx
Андрей Руссков
Обычно класс делается виртуальным когда это таки нужно.
Ну вот у меня есть класс. Он реализует одну виртуальную функцию. И в реализации используется 10 неполиморфных вызовов методов класса.
источник

АР

Андрей Руссков... in pro.cxx
"виртуальный класс" не значит что все его методы обязаны быть виртуальными )
источник

m

magras in pro.cxx
Андрей Руссков
"виртуальный класс" не значит что все его методы обязаны быть виртуальными )
Именно. Но когда я делаю вызов невиртуальной функции у меня все равно под ногами будет путаться vtable (и потенциально съедать место в кеше), потому что он лежит прямо в классе.
источник

АР

Андрей Руссков... in pro.cxx
ну rationale я понял
источник

IA

Igor Akhmetov in pro.cxx
magras
Ну в расте они используются в том числе для runtime полиморфизма. Я не уверен, что эта часть легко переносится в плюсы.
Про перенос в плюсы https://github.com/ldionne/dyno
источник

m

magras in pro.cxx
Андрей Руссков
ну rationale я понял
Я уже говорил, что я этим не пользовался на практике в расте, но в rust book'е это не выглядело чем-то неудобным. На счет перформанса, как я изначально говорил, это сложно оценить. С точки зрения дизайна языка это позволяет легко расширять поведение любой 3rd party структуры.

Просто когда мы смотрим на трейты раста, нужно понимать, что они используются в том числе для рантайм полиморфизма в то время как концепты используются в compile time. Наверное, в большинстве случаев это не имеет значения, но помнить об этом стоит.
источник

DF

Dollar Føølish in pro.cxx
Трейты это по сути тайпклассы
источник

DF

Dollar Føølish in pro.cxx
Правда в хаскеле система типов помощнее
источник

DF

Dollar Føølish in pro.cxx
Но к концептам это не имеет отношения
источник

АР

Андрей Руссков... in pro.cxx
почему когда функциональщики вклиниваются в беседу, они всегда стартуют с чужеродных терминов?
источник

DF

Dollar Føølish in pro.cxx
Потому что тайпклассов в мейнстрима нет за пределами раста и скалы :)
источник

DF

Dollar Føølish in pro.cxx
Поэтому термин чужеродный
источник

DF

Dollar Føølish in pro.cxx
Я бы с радостью сослался на какую нибудь джаву, но там нет ни того ни другого
источник

АР

Андрей Руссков... in pro.cxx
так может тогда давайте разговаривать (переходим к аналогиям) не на латыни?
источник

DF

Dollar Føølish in pro.cxx
А оно невыразимо тогда получится
источник

AB

Artöm Bakri Al-Sarmi... in pro.cxx
Dollar Føølish
Потому что тайпклассов в мейнстрима нет за пределами раста и скалы :)
Тайпклассы это хкт?
источник

DF

Dollar Føølish in pro.cxx
Это трейты + хкт да
источник