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

Что значит «заоптимизировал sse, fpu»?

27 ответов

22 просмотра

То и значит, что сгенерировал код, использующий оптимизацию участка с SSE, и FPU (в других участках)

Aleksandr- Автор вопроса
Entusiast
То и значит, что сгенерировал код, использующий оп...

То есть есть более компакнтый способ работать с плавающей точкой?

Aleksandr
То есть есть более компакнтый способ работать с пл...

Ты читаешь сообщения?? Конфликт флагов INC. Знаешь, что это?

Aleksandr
То есть есть более компакнтый способ работать с пл...

И причём тут более компактный? Использование SIMD это признак включённого флага оптимизации, однако, как я понял, компилировалось на MinGW, и был опущен флаг -march=native, вследствие чего компилятор упустил в оптимизации INC, а авторы, естественно, этого проверить не смогли. Но если бы это писал человек, то он бы это смог увидеть. Ответ?

Entusiast
То и значит, что сгенерировал код, использующий оп...

Компилятор обычно оптимизирует не под конкретный процессор а под некоего абстрактного коня в вакууме, так как можно использовать инструкцию которой на данном конкретном проце нет. Пример, софтины использующие КУДА, новые нвидиевские СДК, какзалось бы причем проц, но на моем проце оно не работает, ему там какая то инструкция нужна которой в моем проце нет. И оно по сути нафиг не нужно и люди патчами обходят эту фигшулину, но как пример переоптимизации думаю подходит. То есть чем лучше оптимизирован код, тем больше геммороя с переносимостью

Oleksij Kyslytsja
Компилятор обычно оптимизирует не под конкретный п...

То есть ты сейчас признал, что компилятор оптимизирует код, чтобы при этом он лучше переносился, а не быстрее работал?

Entusiast
То есть ты сейчас признал, что компилятор оптимизи...

Во первых я не спорил Во вторых я все что я хочу сказать так, что компилятор оптимизирует как ему скажешь. Дефолтные настройки чаще всего используют некий старый проц в котором может новых инструкций не будет. Вручную ты можешь использовать все инструкции что есть у тебя, но твой код может и не выполнится скажем у меня. То есть в ряде случаем человек может дать код, который в строго определенном окружении даст выигрыш по сравнению с копмпайлерным. Но тот же человек может и компайлер настроить и оттюнить так, что компайлер даст такой же код. Но в общем случае код написанный человеком не будет быстрее только потому, что его человек написал. Компиляторы и люди пишут код из разных предпосылок и для разных целей.

Entusiast
То есть ты сейчас признал, что компилятор оптимизи...

Если кратко то компилятор сделает ровно то, что попросишь. Настроить компилятор не менее высокое искуство, чем скажем в архитектуре конкретного проца разобраться. Я обычно дефолтные настройки использовал, мне хватало

Oleksij Kyslytsja
Во первых я не спорил Во вторых я все что я хочу ...

Аватар не прогрузился, я думал это Сашка ответил. Да, согласен с тобой насчёт предпосылок, и в целом насчёт флагов компилятору. Но как раз в этом и суть, что человек не всегда на большом проекте сможет проверить, какой ответ он выдал, и не всегда может убедиться, что он взял допустимые настройки. Максимум, что сейчас могут сделать, так это использовать профайлер. Но всегда ли он прав? Вряд ли в него поместятся все аспекты работы инструкций, в том, или ином контексте - например, в том же цикле INC будет медленнее, чем ADD, однако без цикла 2 INC уже будут выигрывать по скорости ADD EAX, 2 Это всё сложно предугадать, поэтому пропуски бывают. Ну а нанимать ресёрчера сейчас мало, кто будет. Т.к дело это дорогое

Entusiast
Аватар не прогрузился, я думал это Сашка ответил. ...

Да я не знаю как с этим аватаром быть. Уже масса случаем была когда люди по аватару принимали за других людей 😿

Entusiast
Аватар не прогрузился, я думал это Сашка ответил. ...

Кстати, стоит затронуть, что профайлер может дать участок, который медленно работает. Может это поможет, если загуглить, и найти какой-нибудь флаг для компилятора

Entusiast
Аватар не прогрузился, я думал это Сашка ответил. ...

Вот потому на большом проекте должен быть чел, который погружается в настройки инструментария более глубоко, нежели прочие и определяет те самые настройки. Благо, что настройки нен меняются каждый день.

Entusiast
Кстати, стоит затронуть, что профайлер может дать ...

В ruct такой профайлер встраивают, плюс есть утилита которая замордует советами Для gcc только отдельные искать, ну и опыт опять таки

Oleksij Kyslytsja
Если кратко то компилятор сделает ровно то, что по...

Компилятор сделает то что я попрошу? Допустим я делаю либу под win окружение, заведомо однопоточную DisableThreadLibraryCalls, и далее я хочу снять со строк потокобезопасные навороты (которые сводятся к невозможности работать со строками напрямую когда объявляю их как string, т.е. к копированию этих строк ТИПО в потокобезопасные места, а уже потом работа с ними). Как?????????? как снять навротоы потоковой хрени? порядка 14МБ вспомогательных процедур которые мне никаким боком не приперлись.

ProMiNick
Компилятор сделает то что я попрошу? Допустим я де...

Ээээ батенька, а вы либы посмотрели, какие используете? Проверили все зависимости которые тянутся?

Oleksij Kyslytsja
Ээээ батенька, а вы либы посмотрели, какие использ...

а вот либы идут вместе с типом стринг. Если во всех местах без стрингов тупо PCHar`ы то разница как раз эти 14 Мб.

ProMiNick
а вот либы идут вместе с типом стринг. Если во все...

Ну и как должен компайлер поступить тогда? Он ровно то что попросили и сделал. Взял ваш код, транлировал объектник и слинковал с тем, что у вас в системе. Дайте либы с другим стрингом будет другой стринг. Но вообще проблемы трансляции объектного кода нельзя мешать с проблемами линковки. Хотя и в линковке компайлер делает то что просят

Oleksij Kyslytsja
Ну и как должен компайлер поступить тогда? Он ровн...

Компилятор не способен снять потокобезопасность с типа стринг даже когда целевое приложение однопоточно. Это "матершинное слово" как не оптимизировано.

ProMiNick
Компилятор не способен снять потокобезопасность с ...

Потому что компилятор работает с твоим кодом, а все линкуемые либы берет как есть

Oleksij Kyslytsja
Потому что компилятор работает с твоим кодом, а вс...

вот, тупа в приведение типов к стрингу зашита фигня и она внутри компилятора (не вынуть).

ProMiNick
вот, тупа в приведение типов к стрингу зашита фигн...

Она в либе обычно. В случае винды это херь растущая со времен OLE и COM

Aleksandr- Автор вопроса
Aleksandr
нет

Сашка не хочет признавать поражение

Aleksandr
тоже нет. при чем тут флаги?

Называй как хочешь. Из-за INC в цикле будет потеря тактов

Aleksandr- Автор вопроса
Aleksandr
а из-за add не будет, внезапно?

Нет, он обновляет все флаги, и не сохраняет их в потоке. Господи, Сашка, ну иди ж ты Агнера почитай, ну что ж ты стыдишься!!

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

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

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Карта сайта