Size: a a a

2020 October 26

E

EgorBo in graalvm_ru
Alex
ну мне под мак надо сразу найти сборку hsdis =) прежде чем выдам асм
я отсюда брал https://github.com/a10y/hsdis-macos
источник

OS

Oleg Shelajev in graalvm_ru
может кстати x87 это не круто на самом деле
источник

OS

Oleg Shelajev in graalvm_ru
надо проверить что c2 делает
источник

E

EgorBo in graalvm_ru
Oleg Shelajev
может кстати x87 это не круто на самом деле
так не факт же)
источник

OS

Oleg Shelajev in graalvm_ru
а с интами просто .net тоже медленнее?
источник

E

EgorBo in graalvm_ru
чуть-чуть быстрее, но процентов на 10, скорее всего грааль еще циклы какие-нибудь развернул или что-нибудь такое - но я не разбирался уже)
источник

E

EgorBo in graalvm_ru
но в дотнете % тоже надо доделать для интов
источник

OS

Oleg Shelajev in graalvm_ru
это когда там структ? прикольно
источник

E

EgorBo in graalvm_ru
угу. у нас были попытки внедрить Escape analysis но не увидели смысла
источник

E

EgorBo in graalvm_ru
т.к. в большинстве случаев программисты знают сами где структ воткнуть :D
источник

E

EgorBo in graalvm_ru
ну вернее фича крутая, но она имеет гораздо меньшую ценность с кастом value types и рефайнед генериками
источник

OS

Oleg Shelajev in graalvm_ru
наверное. очень интересно будет посмотреть когда валхаллу завезут наконец
источник

E

EgorBo in graalvm_ru
единственный минус с ней и генериками - это проблемы с АОТ (решаемые, но всё же) 😊
источник

OS

Oleg Shelajev in graalvm_ru
раз ты здесь кстати запусти то же самое только с  -XX:-UseJVMCICompiler посмотреть что C2 делает
источник

OS

Oleg Shelajev in graalvm_ru
типа
-XX:-UseJVMCICompiler -XX:-TieredCompilation -XX:CompileCommand='print, Blender.initialize'
источник

A

Alex in graalvm_ru
EgorBo
чуть-чуть быстрее, но процентов на 10, скорее всего грааль еще циклы какие-нибудь развернул или что-нибудь такое - но я не разбирался уже)
что циклы развёрнуты это точно

суммирование в строке кода выглядит как
if ((color.r + color.g + color.b) % 42 == 0) {

0x000000012207652f: vaddsd %xmm1,%xmm2,%xmm1
0x0000000122076533: vaddsd %xmm0,%xmm1,%xmm0  

;*dadd {reexecute=0 rethrow=0 return_oop=0}
                                               ; - xxx.Blender::initialize
источник

A

Alex in graalvm_ru
в случае хотспота он сразу инитит классы и делает add для них, выгружает в регисты
потом загружает в xmm обратно для того чтобы сложит

в случае грааля он создание класса + add на них и накапливание аккумулятора для деления идет вместе
источник

A

Alex in graalvm_ru
ну и видно что не в интах считает =)
источник

E

EgorBo in graalvm_ru
Alex
в случае хотспота он сразу инитит классы и делает add для них, выгружает в регисты
потом загружает в xmm обратно для того чтобы сложит

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

E

EgorBo in graalvm_ru
тем более первое поле на нам не важно
источник