169 похожих чатов

Какой профит от SPECIALIZE прагмы?

16 ответов

7 просмотров

Меньше редиректов ценой дубликации кода. https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/glasgow_exts.html#specialize-pragma

Пользователь 629ad
Меньше редиректов ценой дубликации кода. https:...

ну так-то это наоборот средство уменьшить дупликацию кода

позволяет заранее заготовить ходовые специализации для функции, чтоб компилятор не пытался их потом делать снова и снова

Danil-Berestov Автор вопроса
Danil Berestov
А почему "снова и снова"? не понимаю

ну локально в разных местах специализировать одно и то же

Danil-Berestov Автор вопроса
Danil Berestov
А, вот оно шо. Он реально так делает? А зачем?

ну конечно, без специализации все тормозить будет

A64m AL256m qn<cores> I0
ну так-то это наоборот средство уменьшить дупликац...

Наоборот ведь, иначе будет одна полиморфная функция, в которую словарики параметрами передаются, а так их будет много, но со специализированными типами и словарями. Агрессивно и повторно специализирует С++, нет?

Пользователь 629ad
Наоборот ведь, иначе будет одна полиморфная функци...

ну он попытается, чтоб не была одна полиморфная функция, возможно много раз

A64m AL256m qn<cores> I0
ну он попытается, чтоб не была одна полиморфная фу...

Если функции в разных модулях, то и пытаться не должен.

A64m AL256m qn<cores> I0
должен, конечно, и будет

> By default, functions are not specialised across modules. Только если поменлось что-то за 3 года. https://wiki.haskell.org/Inlining_and_Specialisation

Пользователь 629ad
> By default, functions are not specialised across...

это не соотвествует действительности, для функций определенных (настройками) размеров будут сохранятся развертки, даже если они не помечены инлайнабл/инлайн, ну и они часто помечены этими прагмами

A64m AL256m qn<cores> I0
это не соотвествует действительности, для функций ...

правда в хедер-файл попадают развертки для неаннотированных функций примерно такого размер, который инлайнится, так что технически это корретно, как таковой специализированной функции не будет, будет ее заинлайненое тело

Похожие вопросы

Обсуждают сегодня

Anyone here suffers from unexplained aural migraines, who would be up for talking for a bit? Doesn't *have* to be aural, but I am not asking about headaches, I mean actual mi...
Martin Rys
46
подскажите пожалуйста, как мне освободить результат записанный в переменную result? в чем проблема подскажите если МОЖЕТЕ?
Михаил Helper
28
вопрос по москвину - не понимаю вот такого вопроса похоже Сколько разных всегда завершающихся функций с типом a -> a -> b -> a -> a можно реализовать? Две функции одинаково...
Fedor
11
Слушайте, ещё такая интересная задачка. Сделан аудит действий пользователей через триггеры в базе, соответственно каждый пользователь имеет свой логин и пароль в базе. Это пре...
Сергей Бычков
11
есть тут кто-то , кто только начал изучать си? если проходите курс на степике или как-то сами изучаете, пишите, может, скооперируемся?..
Eule
25
Скажите, тут нет проблемы? IMyInterface1 = interface function GetInterface2: IInterface2; ... function TMyInterface.GetInterface2: IInterface2; begin Result := TI...
Ruslan aka DUDE
18
Утра доброго. Просветите пожалуйста. Хочу сделать rest сервер на делфи. Посмотрел 3 фреймворка: dmvc, Mars, mormot. Ни в одном из них не упоминается ассинхронная обработка вхо...
Сергей Бычков
10
возможно для форматирования TimeStampZ нужен другой механизм, не?
Роман Лях (rgreat)
13
вопрос странный немного... в секции interface идёт константа const TableExt: array [0..39] of record _type: byte; _ext : string; end = ( (_type:typeDAT ...
Alexey Kulakov
5
Всем привет! Помогите разобраться с Lazarus. Переношу программу с Delphi 10.2 Tokyo на Lazarus 3.2. У меня есть строка string которая изначально имеет такое содержание (то чт...
Дмитрий Завгородний
4
Карта сайта