동적으로 링크 된 라이브러리에서 함수 호출 속도를 높이기 위해 자체 수정 코드를 사용할 수 있습니까?
내가 이해하는 한 ELF 공유 라이브러리 는 일종의 간접 점프 테이블 (프로 시저 연결 테이블 또는 PLT)을 사용하여 라이브러리 함수의 지연 바인딩을 가능하게합니다. 목적은 코드 세그먼트에서 테이블을 수정하지 않고도 첫 번째 호출에서 함수 위치의 지연 해결을 가능하게하는 것 같습니다.
로드 타임 또는 첫 번째 함수 호출에서 해당 테이블에 대한 코드를 동적으로 생성하는 것이 더 빠르지 않습니까?
프로세스간에 코드 세그먼트를 가능한 많이 공유 할 수 있습니까 (동적 테이블은 프로세스 전용)? 보안상의 이유입니까 (쓰기 가능한 코드 는 실행 가능해서는 안되지만 JIT는 항상 그렇게하고 실제로 프로그램을 시작하기 전에 로더 가 쓰기 권한 을 추가하고 제거 할 수 있습니까)?
아니면 그것들의 조합입니까? 함수 호출 당 작은 성능 이득은 그만한 가치가 없을까요?