News for hackers. Stuff that matters.
Re:Making the obvious code fast (2016) by saagarjha on Wednesday April 17, 2019 @02:34PM (#19685207)
> Usually I tell them that most likely the runtime of their language is written in C so you can always do as well in C.

The point is that with a JIT the runtime is executing as little as possible, with the rest being dynamically optimized machine code. So this isn’t really a fair thing to say…

Re:Making the obvious code fast (2016) by gameswithgo on Wednesday April 17, 2019 @03:02PM (#19685439)
I've never seen in practice any jit do better than hand tuned AOT compiled code.
Re:Making the obvious code fast (2016) by barrkel on Wednesday April 17, 2019 @05:19PM (#19686576)
I've seen lambdas and virtuals inlined dynamically. AOT would need to be statically typed and instantiated all the way to do the same thing.

I could create a sample program that would be hard to make as fast in C or C++, with the constraint that the code needs to be dynamically loaded at runtime.

In practice, it's easier to modify a more dynamic program and be sure you're not breaking much. Highly tuned C tends to bake in assumptions about memory lifetime, layouts, call graph, etc. The flexibility to modify is what gives you the ability to target higher level improvements in a shorter amount of time.

Given any concrete implementation, after it's been designed in a more dynamic language, you can convert it to something fast in something like C. But starting from C is probably not a great idea. And not everything can be written multiple times economically.

E.g. the .net GC was prototyped in Lisp, and initially converted to C++ with a translator.

Re:Making the obvious code fast (2016) by pjmlp on Wednesday April 17, 2019 @05:37PM (#19686699)
I have, try to make an AOT compiler remove dynamic dispatch across shared libraries and convert it into either direct calls or even inline them.
Re:Making the obvious code fast (2016) by saagarjha on Wednesday April 17, 2019 @03:42PM (#19685787)
It's rare, but it can happen occasionally. A just-in-time compiler has access to tracing and profiling that a ahead-of-time compiler may not, which means that it can do things like inline a virtual method call that is actually monomorphic at runtime.
Re:Making the obvious code fast (2016) by maxxxxx on Wednesday April 17, 2019 @04:02PM (#19685964)
“occasionally”

That’s the keyword here.

Re:Making the obvious code fast (2016) by saagarjha on Wednesday April 17, 2019 @09:11PM (#19687878)
I was responding to a comment that had the word "never" in it.