this post was submitted on 04 Nov 2024
10 points (64.7% liked)

Programming

17435 readers
267 users here now

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you're posting long videos try to add in some form of tldr for those who don't want to watch videos

Wormhole

Follow the wormhole through a path of communities !webdev@programming.dev



founded 1 year ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
[–] GetOffMyLan@programming.dev 8 points 1 week ago* (last edited 1 week ago) (2 children)

Actually jit languages can outperform compiled languages by using runtime analysis to perform tiered compilation and profile guided optimisations.

C# has made some great strides in this regard.

All the normal optimisations are applied when it is compiled to byte code. Like loop unrolling etc.

Then once it detects the hot paths during execution it can apply even more based on how it is called. It can also do optimisations that aren't possible at initial compile time.

Dynamic PGO it's called. It's a really interesting topic.

[–] Feyd@programming.dev 6 points 1 week ago (1 children)

You can do PGO with GCC, though it takes extra steps of course

[–] UFODivebomb@programming.dev 4 points 1 week ago

That does constrain the optimizations to a profile determined prior to the end user. Which is hopefully the same but might not be. Shared code between applications also is a challenge.

[–] nous@programming.dev 5 points 1 week ago (1 children)

Can when the specific situations are reached in very micro benchmark situations. But overall on aggregate you find even JIT languages don't strictly outperform pre compiled languages for general workflows when looking at languages of a similar class. When you compare them to compiled languages like C/C++/rust/zip (aka ones without a GC or much of a runtime at all) then JIT languages fall behind like all other GCed languages.

[–] GetOffMyLan@programming.dev 3 points 1 week ago

Most of the time yeah. But it depends as you can write c# with very little GC use if you avoid allocations.

Ahead of time compiling also gets things much closer. But then you lose runtime optimization.