DEV Community

Vee Satayamas
Vee Satayamas

Posted on

Trying TruffleRuby

I ran wbrk2.rb:

# encoding: UTF-8
require 'thailang4r/word_breaker'
word_breaker = ThaiLang::WordBreaker.new
line = 'แต่ผมเคยมีปัญหาตอนจ่ายตังหลายปีแล้วแต่ผมเคยมีปัญหาตอนจ่ายตังหลายปีแล้วแต่ผมเคยมีปัญหาตอนจ่ายตังหลายปีแล้วแต่ผมเคยมีปัญหาตอนจ่ายตังหลายปีแล้วแต่ผมเคยมีปัญหาตอนจ่ายตังหลายปีแล้วแต่ผมเคยมีปัญหาตอนจ่ายตังหลายปีแล้วแต่ผมเคยมีปัญหาตอนจ่ายตังหลายปีแล้วแต่ผมเคยมีปัญหาตอนจ่ายตังหลายปีแล้วแต่ผมเคยมีปัญหาตอนจ่ายตังหลายปีแล้ว'

t1 = Time.now
for i in 1..10000
  puts word_breaker.break_into_words(line).join("|")
end
t2 = Time.now
puts t2-t1
Enter fullscreen mode Exit fullscreen mode

in cRuby, jRUby, TruffleRuby by this script:

#!/bin/bash
IMPLS=("cruby1" "jruby1" "truffle1")
for i in $(seq 1 10); do
    for j in ${IMPLS[*]}; do
    echo $i,$j,$(docker run --rm -it -v $(pwd):/work -w /work $j ruby wbrk2.rb | tail -n1)
    done
done
Enter fullscreen mode Exit fullscreen mode

Dockerfile.cruby:

FROM ruby:3.1
RUN gem install thailang4r
Enter fullscreen mode Exit fullscreen mode

Dockerfile.jruby:

FROM jruby
RUN gem install thailang4r
Enter fullscreen mode Exit fullscreen mode

Dockerfile.truffle:

FROM ghcr.io/graalvm/truffleruby:22
RUN gem install thailang4r
Enter fullscreen mode Exit fullscreen mode
cRuby jRuby TruffleRuby
1 16.42368491 54.169815 11.385601
2 16.58381034 51.668375 11.99536
3 16.47655229 53.584401 12.088978
4 17.52281777 54.222869 10.893925
5 16.92775603 54.912019 12.24505
6 16.89063941 52.43011 11.413859
7 17.12419062 57.041267 11.395317
8 17.51911099 51.571193 11.551416
9 16.97416603 51.805853 11.578309
10 16.79307381 51.006189 12.517783
mean 16.92358022 53.2412091 11.7065598
Speed 1X 0.32X 1.45X

wbrk2 on TruffleRuby ran at 1.45X speed of cRuby. wbrk2 on jRuby ran at 0.32X speed of cRuby.

Top comments (0)