위의 코드 avx2 컴파일러 옵션 주고 1메가 넘는 haystack 대상으로 벤치마크 했더니
표준 라이브러리 구현보다 10배 빠름 ㄷㄷ
표준 라이브러리 구현도 당연히 나이브한 2중 루프가 아니라 나름 Boyer-Moore-Horspool 알고리즘으로 구현되어있는건데도 엄청 차이남
haystack 사이즈가 작으면 차이가 줄어드는데 아주 작아도 어지간하면 훨 빠른 듯
짤 e0/e1에 bool이라고 인레이 힌트 달려있는데 실제로는 bool이 아니라 u8의 벡터임
지그 lsp가 아직 존나 꾸짐
x86_64의 베이스라인인 sse2 옵션으로 돌려도 7배 빠르네
정보) 디아블로2 리저렉션은 AVX2가 강제되는 패치를 했다가 약 25%의 AVX2 사용불가 유저들의 반발에 못이겨 후퇴했다
avx2 나온지 10년도 넘었는데 아직도...
누가 크레이트로 만들어서 올린거 있을듯 아니면 니가 크레이트 선점해봐
이거 그냥 남이 작성한거 진짜 살짝만 고친거고 원래 작성한 사람도 이미 c/c++에서 흔히 쓰던 알고리즘 그대로 옮겨온거임 ㅋㅋ
@ㅇㅇ(175.124) 알아 그러니까 만든사람 없으면 선점하라고 한거지
지그는 공식 패키지 레지스트리가 없단다 ㅋㅋ 선점은 무슨 ㅋㅋㅋ 이전에 타르볼 받아서 쓰다가 이제 겨우 깃 레포 주소 참조할 수 있도록 바뀐건데 선점을 어케함 ㅋㅋㅋㅋㅋ
211.234/ 다른 댓글대로 zig는 공식 저장소 없이 개별 원격 저장소 이용하는 정도긴 한데 또 커뮤니티가 좁아서 먼저 홍보 선빵 때리는 정도는 가능할 듯 이거 시작으로 이것저것 다른 것도 만들어보고는 있음 ㅋㅋ 종합 simd 슬라이스 조작 라이브러리가 안 보이기는 하는 듯
@ㅇㅇ(39.7) 얘는 선점의 뜻이 뭔지 모르는듯 아무것도 없으니까 개인 개발자가 선점이 가능하지
@ㅇㅇ(175.124) 커뮤니티 홍보하고 문자열 조작 라이브러리 생길때마다 simd로 성능 개선했다면서 풀리퀘 넣어서 끼워팔면 나중에 거의 대부분 문자열 다루는 패키지가 그대로 쓰고 있을듯
그런데 함수는 임의의 T 타입에 대해 정의했으면서 정작 vl은 u8으로 한정되어있는거냐
리팩토링하고 테스트 다시 만들다가 발견함 ㅋㅋ