stack
, queues
, linked list
등과 같은 기본 데이터 구조를 구현할 때. 동적으로 메모리를 할당하여 자원 풀 (노드)을 만들어야합니까? 아니면 노드가 필요할 때마다 메모리를 별도로 할당해야합니까?데이터 구조용 리소스 풀
답변
이것은 전적으로 귀하의 목표에 따라 다릅니다. 기본적으로 (달리 달리해야 할 필요가 없다면) 다음 노드마다 정상적인 할당을 수행하면됩니다. 단지 할당 노드에 비해
메모리 풀은 :
빠른 할당을 확인합니다. 기본 할당 메커니즘에 따라 때로는 이 빠릅니다.
일반적으로 메모리 조각화는 적지 만 일부 할당 자에게는 문제가되지 않을 수 있습니다.
주요 단점 : 예약되었지만 사용되지 않은 노드에 메모리를 낭비합니다. 두 개의 인스턴스 만있는 것과 달리 데이터 구조를 무차별 적으로 (예 : 인스턴스 1000 개) 사용하는 경우 매우 중요합니다. 때문에 단점의
C++의 모든 표준 컨테이너에는 allocator
템플릿 매개 변수가 있습니다.
기본 시간 대 공간 트레이드 오프입니다. 더 중요한 것을 기반으로 선택하십시오.
풀을 미리 할당하면 런타임 요소 삽입이 평균 속도 - 즉 일정 시간, 즉 O (1)에 최적화됩니다. "평균적으로"는 이 대부분 삽입이 일정 시간 () 인 것을 의미합니다.은 최대 값을 초과하고 풀을 확장해야하며 이는 선형 시간 O (n)입니다. 또한 전체 풀을 사용하지 않으면 결국 메모리를 낭비 할 위험이 있습니다. 당신이 실시간으로 할 경우
모든 새로운 노드의 할당, 당신은 항상 일정 시간의 삽입을해야하지만이 경우, 일정 시간이 조금 더 위의 일정 시간보다 당신 때문에하지 값을 메모리 위치에 저장하면되지만 메모리 위치를 먼저 할당해야합니다. 또한이 방법은 미리 메모리 위치를 예약하여 메모리를 낭비하지 않습니다.
는 대부분의 상황에서, 내가 실시간으로 할당 시간 현명한 당신은 풀링 된 접근 방법을 사용하십시오 내가 왜보고하지 않는 것이 충분히 효율적이라고 생각, 는하지 않는 한 응용 프로그램은 거대한 할 극단적 인 평균 속도 을 필요로하거나 삽입 횟수.
- 1. 데이터 구조용 3d 모델링
- 2. 비 DB 구조용 JDBC 시뮬레이터
- 3. IntelliJ IDEA 구조용 교체
- 4. CSS3 구조용 가상 클래스 스태킹
- 5. SharePoint 리소스 데이터
- 6. 코어 데이터 리소스
- 7. 데이터 구조에 대한 리소스
- 8. 구성 요소 용 데이터 풀 구성
- 9. 풀 컨테이너에 대한 최적의 데이터 구조는 무엇입니까?
- 10. 구조용 계층 구조 구성 요소 스토리지
- 11. 개체 풀 대 연결 풀
- 12. 리소스 충돌을보고하기위한 데이터 구조를 디자인하십시오.
- 13. SQL Server 데이터 마이닝 리소스
- 14. C#의 데이터 마이닝 리소스
- 15. 데이터 압축 연구를위한 권장 리소스
- 16. 연결 풀 감지
- 17. JBoss 데이터베이스 연결 풀
- 18. 풀 쓰레기 수거 전략
- 19. ADO.Net 연결 풀 최대 풀 크기에 도달했습니다.
- 20. 캐시/풀/캐시 풀 사이의 지침/차이점
- 21. JNDI가없는 Java 연결 풀?
- 22. 자식 풀
- 23. 연결 풀
- 24. Glassfish 리소스 설정 업데이트
- 25. 리소스 파일의 상대 경로?
- 26. ASP.NET + Moq + 데이터 주석 + 리소스 문자열
- 27. 데이터 바인딩이 리소스 사전 내에서 작동하지 않습니다.
- 28. ASP.NET MVC 3 현지화 : 데이터 주석을위한 리소스
- 29. iPhone 핵심 데이터 기반 검색 : 방법, 리소스?
- 30. Tomcat에서 연결 풀 사용 안 함
공유 된 접근 방식을 사용하는 또 다른 이유는 어떤 이유로 * 연속적인 메모리 위치 (즉, ArrayList의 Java 구현과 동일)가 필요한 경우입니다. 그러나 이것은 당신이 당신의 예제에 열거 한 데이터 구조들 사이에 존재하지는 않습니다. – Blah0x7B9