▲GN⁺ 2024-12-06 | parent | ★ favorite | on: Ruby의 속도를 높이기 위한 C 코드의 Ruby 재작성(jpcamara.com)Hacker News 의견 루프 예제는 10억 번 반복하며 중첩 루프를 사용함. 이 벤치마크는 첫 두 줄에서 99% 이상의 시간을 소비할 것이라고 추측됨 배열 요소에 대한 활력 분석을 통해 전체 외부 루프를 제거할 수 있으며, 프로그램을 간단하게 변환할 수 있음 컴파일러가 이러한 분석을 수행할 수 있는지 궁금함 u가 컴파일 시점에 알려지지 않더라도 내부 루프는 몇 가지 명령어로 대체 가능함 Ruby의 향후 버전에 대한 언급이 있으며, Ruby 3.4.0은 이번 크리스마스에, Ruby 3.5.0은 다음 크리스마스에 출시될 예정임 Python의 최소 JIT가 이러한 루프에 어떤 영향을 미칠지 궁금함 Python 3.13은 JIT가 활성화된 상태로 빌드되어야 하며, 이를 통해 벤치마크를 실행해보는 것이 흥미로울 것임 Ruby에 대한 애정이 여전히 남아있음. Matz에게 감사함 Integer#succ의 성능 개선 PR이 2024년 초에 있었으며, 이를 통해 Integer#succ를 사용하는 이유를 이해하게 됨 Integer#succ는 루프 메서드를 재작성할 때 사용되며, 해석기에서 opt_succ (i = i.succ)가 putobject 1; opt_plus (i += 1)보다 더 빠르게 처리됨 개인적으로 #succ를 가독성 때문에 자주 사용하며, UUID 라이브러리의 #bytes 메서드에서 두 번 사용하여 코드 읽기 시 "비트 슬라이싱 모드"를 유지함 TruffleRuby와 관련된 경험을 공유하며, TruffleRuby가 Node.js보다 빠르고 Bun이나 Golang에 근접함 제공된 벤치마크가 변경 후의 TruffleRuby 속도를 보여주는지 확신할 수 없음 벤치마크를 검증하고 메인 저장소에 커밋으로 추가하고 싶음 Ruby가 매우 빨라졌으며, TruffleRuby는 더욱 인상적임 YJIT가 Rust로 작성되었다는 사실을 몰랐음 Python이 벤치마크에서 가장 느린 언어였지만, 2024년 10월 기준으로 Github에서 가장 많이 사용되는 언어임 언어의 느림과 인기가 상관관계가 있는 것 같음 더 많은 언어를 포함한 오래된 언어 비교 저장소가 있음 Advent of Code 솔루션에 큰 변화를 가져왔으며, 놀랍도록 유사하게 보임
Hacker News 의견
루프 예제는 10억 번 반복하며 중첩 루프를 사용함. 이 벤치마크는 첫 두 줄에서 99% 이상의 시간을 소비할 것이라고 추측됨
u가 컴파일 시점에 알려지지 않더라도 내부 루프는 몇 가지 명령어로 대체 가능함Ruby의 향후 버전에 대한 언급이 있으며, Ruby 3.4.0은 이번 크리스마스에, Ruby 3.5.0은 다음 크리스마스에 출시될 예정임
Ruby에 대한 애정이 여전히 남아있음. Matz에게 감사함
Integer#succ의 성능 개선 PR이 2024년 초에 있었으며, 이를 통해Integer#succ를 사용하는 이유를 이해하게 됨Integer#succ는 루프 메서드를 재작성할 때 사용되며, 해석기에서opt_succ (i = i.succ)가putobject 1; opt_plus (i += 1)보다 더 빠르게 처리됨#succ를 가독성 때문에 자주 사용하며, UUID 라이브러리의#bytes메서드에서 두 번 사용하여 코드 읽기 시 "비트 슬라이싱 모드"를 유지함TruffleRuby와 관련된 경험을 공유하며, TruffleRuby가 Node.js보다 빠르고 Bun이나 Golang에 근접함
Ruby가 매우 빨라졌으며, TruffleRuby는 더욱 인상적임
YJIT가 Rust로 작성되었다는 사실을 몰랐음
Python이 벤치마크에서 가장 느린 언어였지만, 2024년 10월 기준으로 Github에서 가장 많이 사용되는 언어임
더 많은 언어를 포함한 오래된 언어 비교 저장소가 있음
Advent of Code 솔루션에 큰 변화를 가져왔으며, 놀랍도록 유사하게 보임