@@ -280,7 +280,7 @@ flow graphs from them. The control flow graphs consist of basic blocks and
280
280
(conditional) jumps between them. Here's a screenshot of the constructed CFG of
281
281
the `execute` clause of `ITYPE` instructions:
282
282
283
- 
283
+ 
284
284
285
285
# Static Pydrofoil IR Optimizations
286
286
@@ -427,7 +427,7 @@ removes all allocations in this code sequence completely.
427
427
After inlining and bitvector/integer operation optimization the control flow
428
428
graph of the ` execute ` clause for ` ITYPE ` instructions looks like this:
429
429
430
- ![ itype flow graph after optimizations] ( images/2025-pydrofoil-itype-after.svg )
430
+ ![ itype flow graph after optimizations] ( / images/2025-pydrofoil-itype-after.svg)
431
431
432
432
433
433
# Function Specialization
@@ -669,7 +669,7 @@ them during host machine code generation.
669
669
Here's a state diagram of the various states and transitions a machine word can
670
670
be in:
671
671
672
- ![ memory state transitions] ( images/2025-pydrofoil-mem-states.svg )
672
+ ![ memory state transitions] ( / images/2025-pydrofoil-mem-states.svg)
673
673
674
674
The result of this approach is that instruction fetch can mostly be
675
675
constant-folded to no machine code instructions at all: the program counter is
@@ -778,7 +778,7 @@ completely impractical to run any interesting benchmark to completion with them.
778
778
779
779
The results look like this:
780
780
781
- ![ ablations] ( images/2025-pydrofoil-ablations.svg )
781
+ ![ ablations] ( / images/2025-pydrofoil-ablations.svg)
782
782
783
783
We can see that the JIT is the most important component for getting Pydrofoil's
784
784
performance, it provides (together with memory immutability tracking) a 15x
@@ -797,7 +797,7 @@ latter two were fairly slow again, so I didn't run them to completion and
797
797
instead extrapolated their instructions/second numbers, the results should
798
798
therefore be taken with a grain of salt. In any case, here are the results:
799
799
800
- ![ comparison qemu] ( images/2025-pydrofoil-qemu.svg )
800
+ ![ comparison qemu] ( / images/2025-pydrofoil-qemu.svg)
801
801
802
802
Qemu is 14x faster than Pydrofoil, Sail is more than 200x slower than Pydrofoil,
803
803
Spike is more than 3x slower than Pydrofoil.
0 commit comments