배경 : 나는 대략 C's memchr과 동등한 기능의 순수한 D 언어 구현을 만들려고하고 있지만 포인터 대신 배열과 인덱스를 사용합니다. 그 이유는 std.string이 컴파일 타임 함수 평가와 함께 작동하기 때문입니다. 익숙하지 않은 사용자의 경우 특정 제한 사항이 충족되면 컴파일 타임에 함수를 평가할 수 있습니다. 한 가지 제한 사항은 포인터를 사용할 수 없다는 것입니다. 다른 하나는 C 함수를 호출하거나 인라인 어셈블리 언어를 사용할 수 없다는 것입니다. 문자열 라이브러리를 컴파일 할 때 컴파일 타임 코드 생성에 유용합니다.memchr()은 어떻게 작동합니까?
질문 : 질문 : memchr은 어떻게하면 빨리 수행 할 수 있습니까? Win32에서 단순 루프를 사용하여 순수 D로 만들 수 있었던 모든 것은 경계 검사를 사용하지 않도록 설정하거나 루프를 풀는 것과 같은 명백한 최적화 기술을 사용하여 적어도 2 배 더 느립니다. 어떤 종류의 비 명백한 트릭을 사용할 수 있습니까? 문자열에서 문자를 찾는 것만 큼 간단합니다.
감사합니다.이 코드는 LGPL 코드이며 D의 표준 라이브러리는 허가 된 라이센스가 있어야합니다. 나는 그것이 문제가되기를 원하지 않는다. – dsimcha
글쎄, 나는 소스를 복사하기보다는 기술 영감을 얻기 위해 그것을 보라고 제안했다. – Chris
대략 150 줄의 코드로 약 절반 이상이 주석이므로 자세한 최적화 내용을 자세히 설명합니다. – Chris