Size: a a a

2020 October 26

E

EgorBo in graalvm_ru
вот не могу понять, я сто лет не видел уже х87 вживую код - но вполне возможно что для этой задачи это быстрее тк нет аналога в SSE, но хз эквивалетно ли полностью fmod
источник

E

EgorBo in graalvm_ru
у нас как и в С++ компиляторах просто либс колл в fmod (например musl: https://git.musl-libc.org/cgit/musl/tree/src/math/fmod.c - адское полотно кода)
источник

P

Parra in graalvm_ru
thanks
источник

OS

Oleg Shelajev in graalvm_ru
О а что C2 делает?
источник

НЗ

Николай Заонов... in graalvm_ru
народ, всем доброго утра, помогите бэкэндеру плз)
хочу на странице создать элемент(типа контейнер с дивами внутри)  имеющий вид как здесь —> https://blocsapp.com/  и добавить  ко всему этому блоку событие что-то вроде: "onactive + прокрутка колёсика мыши вверх(сори за мат, ток разбираюсь)" этот "лежачий  блок начинал возвращаться в положение к какому мы привыкли..но не полностью, а в зависимости от того насколько крутнут колёсио, сори за детске вопросы, прост очень надо и это оказалось сложнеё чем я думал
источник

НЗ

Николай Заонов... in graalvm_ru
буду оч признателен
источник

НЗ

Николай Заонов... in graalvm_ru
разобрался сам, от души
источник

A

Alex in graalvm_ru
EgorBo
а как мне увидеть конечный асм для конкретного метода? я передаю -XX:+PrintAssembly и вижу много версий одного и того же метода
кратко что у вас произошло:

в обычном c2 компиляция метода проходит после 10к вызовов
в c1 вроде после 100
дополнительно если есть достаточно большой цикл, то может сработать компиляция прямо во время прохода по циклу (OSR - on stack replacepemnt, когда цикл останавливается, интерпретатор заменяется на асм код и продолжается дальше, не самый бычтрый код, задача хоть как-то ускориться)

поэтому у вас может быть:
1. сразу прошёл osr внутри метода initialize
2. c1: на очередном вызове osr заменен на выхлоп от c1
3. graal: на очередном вызове c1 заменяется на grall jit

хотя на 1k вызовах я не само уверен что до самого грааяля там точно дошло
источник

A

Alex in graalvm_ru
итого 3 выхлопа с разным ассемблером
источник

E

EgorBo in graalvm_ru
Alex
кратко что у вас произошло:

в обычном c2 компиляция метода проходит после 10к вызовов
в c1 вроде после 100
дополнительно если есть достаточно большой цикл, то может сработать компиляция прямо во время прохода по циклу (OSR - on stack replacepemnt, когда цикл останавливается, интерпретатор заменяется на асм код и продолжается дальше, не самый бычтрый код, задача хоть как-то ускориться)

поэтому у вас может быть:
1. сразу прошёл osr внутри метода initialize
2. c1: на очередном вызове osr заменен на выхлоп от c1
3. graal: на очередном вызове c1 заменяется на grall jit

хотя на 1k вызовах я не само уверен что до самого грааяля там точно дошло
спасибо за пояснение, примерно так и думал 😊 осталось сюда еще вкрутить тиер с фалконом 😀
источник

A

Alex in graalvm_ru
эм… фалкон же в азуле или я что-то пропустил?
источник

E

EgorBo in graalvm_ru
это просто я его тоже хотел посмотреть, как он эмитит ллвм ир, но это уже вне темы. А по выхлопу в оутпуте так просто не сказать от какого компилятора/тиера асм?
источник

C

Charm in graalvm_ru
Alex
кратко что у вас произошло:

в обычном c2 компиляция метода проходит после 10к вызовов
в c1 вроде после 100
дополнительно если есть достаточно большой цикл, то может сработать компиляция прямо во время прохода по циклу (OSR - on stack replacepemnt, когда цикл останавливается, интерпретатор заменяется на асм код и продолжается дальше, не самый бычтрый код, задача хоть как-то ускориться)

поэтому у вас может быть:
1. сразу прошёл osr внутри метода initialize
2. c1: на очередном вызове osr заменен на выхлоп от c1
3. graal: на очередном вызове c1 заменяется на grall jit

хотя на 1k вызовах я не само уверен что до самого грааяля там точно дошло
а jmh не решает все эти проблемы?
+ вот сюда посмотреть: https://github.com/openjdk/jmh/blob/master/jmh-samples/src/main/java/org/openjdk/jmh/samples/JMHSample_11_Loops.java
источник

A

Alex in graalvm_ru
да, поэтому я сразу и написал про jmh тест, так как многие из этих вещей он позволяет избежать
источник

A

Alex in graalvm_ru
типо делаем N тестовых прогревов вашей функции
потом M рабочих

усредняем/считаем ошибку
источник

ВВ

Виктор Вербицкий... in graalvm_ru
Alex
типо делаем N тестовых прогревов вашей функции
потом M рабочих

усредняем/считаем ошибку
И он же може раскладку по результатам компиляции показать в очень удобном виде
источник

A

Alex in graalvm_ru
да, там и асм выкинуть может и perf по инстнукциям сказать какая выжирает
но это уже отдельная тема =)
источник

OS

Oleg Shelajev in graalvm_ru
Профессионалы :) сделайте бенчм уже
источник

OS

Oleg Shelajev in graalvm_ru
А то сплошные рекомендации jmh :)
источник

A

Alex in graalvm_ru
могу вечером сесть сделать если нужно
источник