Hacker News new | past | comments | ask | show | jobs | submit login

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 .



Thanks. 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.




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: