Skip to content

katafrakt/zig-ruby

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 

Repository files navigation

What's this?

This repo contains an experiment of building a Ruby extension with Zig programming language. It implements a slightly altered version of 100 doors from Rosetta Code.

These are results of benchmarks on my machine (Thinkpad T14, Ruby 3.4.1 vs Zig 0.15.2):

Warming up --------------------------------------
                Ruby   752.000 i/100ms
                 Zig     3.655k i/100ms
Calculating -------------------------------------
                Ruby      9.244k (±23.6%) i/s  (108.18 μs/i) -     44.368k in   5.048012s
                 Zig     61.502k (± 0.2%) i/s   (16.26 μs/i) -    310.675k in   5.051463s

Comparison:
                 Zig:    61502.1 i/s
                Ruby:     9243.7 i/s - 6.65x  slower

However, if you edit extconf.rb to use -Drelease-fast flag, the difference is much bigger:

Warming up --------------------------------------
                Ruby   750.000 i/100ms
                 Zig   142.363k i/100ms
Calculating -------------------------------------
                Ruby      7.519k (± 1.4%) i/s  (132.99 μs/i) -     38.250k in   5.087937s
                 Zig      2.427M (± 7.7%) i/s  (411.95 ns/i) -     12.101M in   5.020047s

Comparison:
                 Zig:  2427474.2 i/s
                Ruby:     7519.3 i/s - 322.83x  slower

Please note that this is only one benchmark, not much science behind it. It doesn't mean you will always get 320x speed boost on just rewriting in Zig.

How to run it

  1. Have Zig version 0.15.2 available on your system
  2. Clone this repo
  3. Run rake compile_ext
  4. Run rake benchmark

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •