DEV Community

Vee Satayamas
Vee Satayamas

Posted on

3 3

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.

Image of Timescale

🚀 pgai Vectorizer: SQLAlchemy and LiteLLM Make Vector Search Simple

We built pgai Vectorizer to simplify embedding management for AI applications—without needing a separate database or complex infrastructure. Since launch, developers have created over 3,000 vectorizers on Timescale Cloud, with many more self-hosted.

Read full post →

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs