현재 저는 (Design-Stage에서) 사용자 정의 IR을 사용하는 다소 작은 컴파일러를 개발 중입니다. 내가 겪고있는 문제는 모든 지시 사항을 담을 수있는 효율적인 컨테이너 데이터 구조를 선택하는 것이다.컨테이너 데이터 구조는 std :: vector 및 std :: list와 유사합니다.
기본 블록에는 ~ 10000 개의 명령어가 포함되며 명령어는 ~ 250 바이트와 비슷합니다.
컴파일러가 복잡한 변환 (예 : 수많은 무작위 삽입/제거)을 가질 것이므로 반복기를 무효화하지 않는 컨테이너 데이터 구조를 갖는 것이 좋을 것이라고 생각했습니다. 변환 알고리즘을 간단하고 쉽게 따라 할 수 있습니다.
반면에 캐시 누락 및 메모리 조각화와 관련된 알려진 문제로 인해 성능이 손실됩니다. std :: vector는 여기서 도움이 될 것이지만 벡터로 변형을 구현하는 것은 고통 스러울 것이라고 상상해보십시오.
메모리 부족 오류를 줄이기 위해 메모리 단편화가 적고 반복기가 무효화되지 않는 다른 데이터 구조가있는 경우 질문이 있습니다. 아니면 이것을 무시하고 목록을 계속 사용해야 만합니다.
반복자 무효화 문제를 해결하는 것이 좋습니다. – SirGuy