3 ms·
It doesn't actually use recursion; it is tail recursion and LLVM optimises it to a loop: .LBB0_77: movq %rax, %rbx movq %rcx, %rax addq %rbx, %rax
by dbaupp 12y ago
It doesn't actually use recursion; it is tail recursion and LLVM optimises it to a loop:
.LBB0_77:
movq %rax, %rbx
movq %rcx, %rax
addq %rbx, %rax
incq %rdx
movq %rbx, %rcx
jne .LBB0_77
The difference on x64-64 is the Rust is using 64-bit integers (`int` is pointer sized), while the C is only using 32-bit ones; changing them to the 32-bit `i32` to match the C makes Rust super-fast:
75699
LANGUAGE Rust 2167
75699
LANGUAGE C 2220 # gcc
75699
LANGUAGE C 2271 # clang
I opened https://github.com/logicchains/armfib/pull/1 https://github.com/logicchains/armfib/pull/1 .
- logicchains 12y agoThanks. The tables have been updated to use the new values; I'm really surprised how much of a difference changing from int to int32 made.