Hacker News 의견
  • Rust와 LLVM 메모리 모델에서 "unsafe read beyond of death" 트릭은 정의되지 않은 동작으로 간주됨

    • 컴파일러는 최적화를 위해 이러한 동작이 발생하지 않는다고 가정할 수 있음
    • 이를 피하려면 인라인 어셈블리를 사용해야 함
  • AMD의 AVX512 구현과 Intel의 AVX10 경쟁에 대한 호기심이 생김

    • AVX10은 Intel의 P vs E 코어 문제를 해결하기 위한 것임
    • AMD는 상황에 맞게 Zen5의 전체 폭 또는 Zen4, Zen5 모바일의 256비트 더블 펌프를 사용함
    • 큰 성능 향상은 Zen4 코어에서 이루어짐
  • SWAR 최적화는 8바이트 주소에 정렬된 문자열에만 유용함

    • 비정렬된 문자열에 적용하면 원래 알고리즘보다 느림
    • 알고리즘을 세 부분으로 나누면 더 많은 명령어가 필요함
  • 마스크 추가가 깔끔해 보임

    • .NET 내장 기능에서 AVX512의 마스크 레지스터를 직접 조작할 수 있는 방법이 있었으면 좋겠음
  • Clang을 사용하면 더 나은 결과를 얻을 수 있음

    • 더 나은 명령어 선택과 잘 풀린 결과를 제공함
  • 짧은 길이의 문자열에 대한 코어 루프는 한 명령어가 더 적음

    • 짧은 문자열을 빠르게 처리하는 것이 중요함
  • ASCII를 UTF-8로 대문자/소문자 변환하는 유사한 구현을 C#에서 작성함

    • 짧은 문자열이 대부분의 코드베이스를 지배하므로 빠르게 처리하는 것이 중요함
  • AVX512를 사용하여 텍스트를 uwu로 변환하는 SIMD 사용 예시가 있음

  • 유니코드 문자 변환을 고려하면 더 인상적일 것임

    • 대부분의 프로그래머는 ASCII에만 신경 쓰지만, 표준 문자 집합 외에도 많은 세계가 존재함
  • 과거에 이미지 주위에 검은 테두리를 추가하여 버퍼 SIMD 문제를 피한 경험이 있음

    • 입력을 완전히 제어할 수 없을 때도 있음