RVM рдХреЗ рдХрд╛рд░рдг рдЖрдкрдХреЗ рд╕рд░реНрд╡рд░ рдкрд░ рд░реВрдмреА 2 рдЧреБрдирд╛ рдзреАрдореА рдЧрддрд┐ рд╕реЗ рдЪрд▓ рд╕рдХрддреА рд╣реИ


рдЖрдЬ рд░реВрдмреА рдЗрдирд╕рд╛рдЗрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ, рдореБрдЭреЗ рдЬрд╕реНрдЯрд┐рди рдХреБрд▓реНрд╕реНрдЬрд╝рд╛ рдХрд╛ рдПрдХ рд▓реЗрдЦ рдЖрдпрд╛ рд╣реИ, рдХреНрдпрд╛ рдЖрдкрдХрд╛ рдЖрд╡реЗрджрди рд░реВрдмреА рдХреЗ рд╕рд╛рде рдЪрд▓ рд░рд╣рд╛ рд╣реИ - рдзреАрдорд╛? ред 6 рдирд╡рдВрдмрд░ рдХрд╛ рдЕрдиреБрдЪреНрдЫреЗрдж, рд▓реЗрдХрд┐рди рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдмреНрд░реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд╢рдмреНрдж рднреА рдирд╣реАрдВред рдФрд░ рд▓реЗрдЦ рдХрд╛ рд╕рд╛рд░ рдпрд╣ рд╣реИ: рджреЛрд╕реНрддреЛрдВ рдиреЗ рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХреЛ рд╕рд░реНрд╡рд░ рд╕реЗ рд╕реЛрд▓рд╛рд░рд┐рд╕ рд╕реЗ рдЙрдмрдВрдЯреВ рдХреЗ рд╕рд░реНрд╡рд░ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдФрд░ рд░реВрдмреА рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд░рд╡реАрдПрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдХреЗ рдмрд╛рдж, рдЙрдиреНрд╣реЛрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдЖрд╡реЗрджрди рдзреАрдорд╛ рд▓рдЧ рд░рд╣рд╛ рдерд╛ред рдкрд╣рд▓реЗ рддреЛ рдЙрдиреНрд╣реЛрдВрдиреЗ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдкрд░ рдкрд╛рдк рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдЬрд▓реНрджреА рд╣реА рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рд╡рд╣ рдмрд┐рдВрджреБ рдЖрд░рд╡реАрдПрдо рдерд╛, рдЕрд░реНрдерд╛рддреН, рдЖрд░рд╡реАрдПрдо рд╕рдВрдХрд▓рди рдХреЗ рджреМрд░рд╛рди рдЕрдиреБрдХреВрд▓рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдирд┐рджрд╛рди рдХрд░рдирд╛ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ:
$ time ruby -e "count = 0; while(count < 100000000); count = count + 1; end; puts count" 100000000 real 0m9.019s user 0m8.933s sys 0m0.016s 

"рд╕рд╛рдорд╛рдиреНрдп" рд░рдирдЯрд╛рдЗрдо ~ 4 рд╕реЗрдХрдВрдб рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╕рд╛рде рд╣реА, ~ / .rvm / log / your.ruby.version / make.log рдореЗрдВ рдЕрдиреБрдХреВрд▓рди рдЭрдВрдбреЗ рдХреА рдХрдореА:
 CC = gcc LD = ld LDSHARED = gcc -shared CFLAGS = -I/home/user/.rvm/usr/include -fPIC XCFLAGS = -include ruby/config.h -include ruby/missing.h -fvisibility=hidden -DRUBY_EXPORT CPPFLAGS = -I. -I.ext/include/x86_64-linux -I./include -I. DLDFLAGS = -Wl,-soname,libruby.so.1.9 SOLIBS = -lpthread -lrt -ldl -lcrypt -lm 

-O3 CFLAGS рдореЗрдВ рдореМрдЬреВрдж рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЙрдирдХреЗ рд╕рд░реНрд╡рд░ рдкрд░ рдЬрд╛рдВрдЪ рдХреА рдЧрдИ - рдФрд░ рд╕рдЪреНрдЪрд╛рдИ рдпрд╣ рд╣реИ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдПрдХ рдЬрдЧрд╣ рд╣реИред

рд▓реЗрдЦ рдРрд╕рд╛ рд╕рдорд╛рдзрд╛рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ:
 $ echo "rvm_configure_env=(CFLAGS=-O3)" > ~/.rvmrc 

рдЗрд╕ рд▓реЗрдЦ рд╕реЗ рдПрдХ рд╡рд┐рдХрд▓реНрдк:
 $ echo 'rvm_configure_env=(CFLAGS="-march=native -O2")' > ~/.rvmrc 

рдФрд░ рдлрд┐рд░:
 $ rvm reinstall your.ruby.version 

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЕрднреА рдХреЗ рд▓рд┐рдП рдпрд╣ рдЕрднреА рднреА рдЖрд╕рд╛рди рд╣реИ:
 $ rvm get head && rvm reinstall your.ruby.version 

рдФрд░ рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд░реВрдмреА рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдордЬреЗрджрд╛рд░-рдлрд╛рд▓реНрдХрди рд╕реЗ рдХреБрдЦреНрдпрд╛рдд рдкреИрдЪ - 1.9.3-p327, рдЬреЛ рд░реВрдмреА рдХреЛ рдФрд░ рднреА рддреЗрдЬ рдмрдирд╛рддрд╛ рд╣реИ (рд╡рд┐рд╢реЗрд╖рдХрд░ рдЬрдм рдЖрд╡реЗрджрди рдХреЛ рд▓реЛрдб рдХрд░рддреЗ рд╕рдордп), рдЖрд░рд╡реАрдПрдо рдХреЗ 'рд╣реЗрдб-рд╡рд░реНрдЬрди' рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИред рд╕реНрдерд╛рдкрдирд╛ рднреА рд╕рд░рд▓ рд╣реИ:
 $ rvm install 1.9.3 -n perf --patch falcon $ rvm use 1.9.3-perf --default 

рдкреБрдирд░реНрд╕реНрдерд╛рдкрдирд╛ рдХреЗ рдмрд╛рдж, рд╕рд░реНрд╡рд░ рдиреЗ 2 рдЧреБрдирд╛ рд╕реЗ рдЕрдзрд┐рдХ рдХреА рдЧрддрд┐ рд╡реГрджреНрдзрд┐ рджрд┐рдЦрд╛рдИ:
 $ time ruby -e "count = 0; while(count < 100000000); count = count + 1; end; puts count" 100000000 real 0m4.117s user 0m4.032s sys 0m0.012s 

рдЗрд╕рд▓рд┐рдП рдЕрдкрдиреЗ рд╕рд░реНрд╡рд░реЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ, рдЕрдкрдиреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдЧрддрд┐ рджреЗрдВред

Source: https://habr.com/ru/post/In160371/


All Articles