Comparing C++ vs Rust - Static vs Dynamic dispatch. I will be explaining Assembly ARM64 and X86.See code: https://github.com/sadhbh-c0d3/examples/tree/main/d...
Hm, w przykładzie C++ z wywołaniem metod wirtualnych poprzez tablicę na stosie nie widzę powodu, żeby kompilator nie mógł wyliczyć wyniku na etapie kompilacji. Obecnie działa to nawet w przypadku alokacji pamięci na stercie.
Sprawdziłem w Godbolt i faktycznie dla x86 wystarczy przekazać -O2 jako poziom optymalizacji. Może to jakieś ograniczenie backendu dla ARM…
Hm, w przykładzie C++ z wywołaniem metod wirtualnych poprzez tablicę na stosie nie widzę powodu, żeby kompilator nie mógł wyliczyć wyniku na etapie kompilacji. Obecnie działa to nawet w przypadku alokacji pamięci na stercie.
Sprawdziłem w Godbolt i faktycznie dla x86 wystarczy przekazać -O2 jako poziom optymalizacji. Może to jakieś ograniczenie backendu dla ARM…
Dobra robota! Teraz bardzo kusi by się dowiedzieć czemu. Zacznę od analizy tego co znaczy -O2 dla ARM i x86 i jakie flagi aktywuje.