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

Привет. Может у меня странный вопрос, но тем не менее. Допустим,

есть вот такой кусочек кода:
public static void main(String[] args){
for (int i = 0; i < 100000000; i++) {
isNonNegative(5);
}
}

private static void isNonNegative(int num) {
if (num >= 0) {
// Some operations here...
int a = num / 1000 - 50;
if (a < 0) a = -1 * a;
int result = fastFibonacci(a);
} else {
// Some operations here...
int result = slowFibonacci(num);
}
}

Он достаточно прост, N-раз вызывается некоторая ф-ция, которая обрабатывает это число n.

Я решил с помощью утилиты JitWatch поизучать то, как оптимизируется этот код JIT компилятором. Первое, что мне показалось валидным, так это инлайнинг в main ф-ции
isNonNegative

Второе, мне показалось, что вторую ветку с else-условием в принципе можно опустить на уровне assembler-кода. Я решил посмотреть чем в действительности отличается компиляция client/server компиляторов (https://ibb.co/3yQCfH1 и https://ibb.co/f8zN94Y). На сколько я понял из этих скринов, всё таки C2 решил затереть else-бранчу.

Теперь можно перейти к сути вопроса. Похоже ли то, что по факту JIT "видоизменяет" isNonNegative, убирая else-ветку?

И если да, то сильно ли это влияет на буст?

2 ответов

2 просмотра

советую задать этот вопрос на stackoverflow или поискать его , извини до JiT я еще не дошел

Если будет выполнено условие для else ветки, профиль пересоберется и там будет код уже с else веткой

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

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

Типа вызывать GetParent и проверять на соответствие GetModuleHandle?
The Bird of Hermes
67
Do any of you guys have interesting projects one could join? I'm a Middle Full-Stack developer (JS/TS, React & Node)
Lev Shapiro
40
$res = json_decode($наша строка из респонса); $res1 = array_map(fn($o) => $o->name, $res->breadcrumbs[0]->entities); Как такое будет на Хаскеле?.. В начале весь джейсон, в ко...
Хаскель Моисеевич Гопник
24
В чем сила брат, в NASM или FASM?
Isaac Kleiner
18
Вопрос по диагностике ошибок (я знаю в чем, в данном конкретном примере, я знаю, как исправить, пример модельный, понятно, что в реальности бывает намного запутаннее). module...
ⰄⰎⰋⰐⰐⰑⰛⰤⰧⰧⰩⰄ ⰊⰑⰁⰓⰡⰛⰦⰕⰫ
10
Хтось використовував Vapor на Windows?
Jaroshevskii
15
Тут кста кто-нибудь NeoVim использует?
Simple Sorcerer
13
А чем вам питонисты не угодили?😂
.
79
Есть какой-нибудь для Delphi/FPC T*Compression(Decompression)Stream на базе LZ4/Zstd/любой другой быстрый(и хорошо сжимающий) алгоритм А ещё лучше в pure pascal А ещё лучше од...
notme
52
у меня вопрос на счет .global <name> для чего это нужно если я пишу на ассемблере? только для того что бы сделать это видимым для линкера? вот что написано в докумментации GA...
Simple Sorcerer
1
Карта сайта