2009-04-21 4 views
0

List<T>을 사용하는 실제/실시간 시나리오는 어디에서 찾을 수 있습니까?
List<T>을 어디서 어떻게 구현할 수 있는지 알고 싶습니다.`List <T>`을 사용하는 실제/실시간 시나리오는 어디에서 찾을 수 있습니까?

모든 코드 예제 또는 링크로 수행 할 수 있습니다.

+1

@ Shog9 - 여기에 원래 질문이 많지는 않지만 매우 잘 공식화되어 있습니다. :) –

+0

@ Shog9가 표시 한 유머 감각을 고맙게 생각하지만 원래 질문은 남아 있지 않았다고 생각합니다. 개정에서. 시작된 롤백 절차. – Cerebrus

+0

"실시간 시나리오"가 OP를 의미하는 것이 "실제 시나리오"라는 용어로 더 잘 묘사됩니다. – Cerebrus

답변

1

간단히 말해, 무언가 (숫자 목록, 사람 목록, 무엇이든 목록) 목록을 원할 때마다 목록, 목록, 목록 만 사용하면됩니다. 어쩌면 내가 당신의 질문의 요점을 놓친 .. 어떻게 List를 구현하는 방법을 물어? 또는 목록을 사용하여 코드를 구현하는 방법은 무엇입니까? 나는 그것이 두 번째 선택이라고 생각한다.

+0

lmgtfy를 권해 드리는 사람을 위해 +1! ;-) – Cerebrus

1

'실시간'시스템에서는 처음 생성 할 때 입력하고자하는 모든 데이터를 저장할 수있는 충분한 크기로 목록이 작성되도록하고 싶을 것입니다 (전달할 생성자를 사용하십시오 용량).

들은 상대적으로 고가이기 때문에 또한, 다음과 같은 작업 (어쩌면 더)를 방지 할 수 있습니다 (즉, 그들은 (1) O를 보이지만하지 않습니다 수 있습니다.) :

  • 삽입 (INT, T)
  • 제거 (T)
  • RemoveAt을 (int)를

이 목록에있는 다른 O (N) 작업이 있지만, 그 중 대부분은 당신이 어떤 방법을보고 추측에는 요 않습니다.

그렇다면 성능 요구 사항에 맞는지 확인하는 유일한 방법은 테스트하는 것입니다. 자신에게 좋은 테스트 장치를 갖춰 그것을 필요로 함을 의미하는 것으로 확인하십시오.

2

List 또는 모든 데이터 구조가 작동하는지 확인하려면 서비스의 성능 요구 사항을 모델링해야 할 것 같은데요. 초당 수백만 개의 항목이 필요합니까? 수십억? 밀리 초? 사양에 맞출 수 있는지 확인하거나 사양을 다시 작성하십시오!

2

저는 실시간과 같은 시스템을위한 소프트웨어를 작성한 적이 없으며, .NET이 좋은 후보라고 생각하지 않습니다. 가비지 컬렉터가 트리거 될 때를 모를 때, 아무 일도 일어나지 않은 것처럼 실행을 프로그램에 반환하기 전에 알 수없는 시간 동안 프로그램을 일시 중지하십시오.

데이터 유형 및 목록으로 수행 할 것으로 예상되는 작업 유형에 대해 자세히 알려주십시오. List에서 가장 느린 부분은 아마도 원래 생성 된 항목을 더 추가 할 때 발생하는 기본 배열의 크기입니다. 이 정보를 계산할 수있는 경우 정수를 초기 크기로 허용하는 생성자를 사용하여이 문제를 해결할 수 있습니다. 또한 삽입/제거와 같은 방법을 사용하지 마십시오.

+0

그런 짐승을 만들 수있는 경험이 없다면 .Net을 실시간 시스템과 함께 사용할 수 없다는 것을 어떻게 알 수 있습니까? –

+0

@Peter, 그래서 내가 "and I _doubt_ that"라는 문구를 사용했습니다. 필자는 실시간 시스템이 사전 구성된 시간 전에 실행되어야한다는 사실을 알고 있어야합니다. 이것은 가비지 컬렉터에 의해 언제든지 코드가 중단되고 언제든지 일시 중지 될 수 있으며 나중에 알림없이 다시 시작될 수있는 경우 보장 할 수있는 것이 아닙니다. – sisve

+0

사실, 나는 -1을 되 찾는다. 하지만 .Net 런타임은 멀티 코어 프로세서가있는 별도의 스레드에서 GC를 실행하도록 구성 할 수 있습니다. 그러면 실시간 시나리오에서 작동 할 확률이 높아집니다. –

1
  1. 하면 특정한 경우 대안 에 비해> 목록 <의 <>
  2. 측정 성능을 목록에 대안을 식별합니다. 귀하의 질문에 대한 일반적인 대답은 정확할 수 없습니다.
1

, 나는 그것이 구현의 측면에서 약간 부풀어 때문에 List<T>이 작업에 적합하지 않을 것에 동의합니다. 물론 사용하기 쉽지만, 거기에는 많은주의가 있습니다.

정말 수행 방법을 확인하는 방법은 다음과 같습니다

  • 다음 List<T>를 사용하여 프로파일 응용 프로그램에 대한 몇 가지 일반적인 작업을 수행하는 프로그램을 작성합니다.
  • RedGates 리플렉터를 사용하여 List<T>의 내부 동작을 연구하면 실제로 병목 현상을 찾아 대체 구현을 찾을 수 있습니다. 예를 들어 하나의 예기치 않은 감속 지점은 목록의 모든 내용을 반복하므로 Count() 메서드에 액세스합니다.
  • 검색 결과는 합리적인 성능 향상과 함께 시스템에서 사용할 수있는 IList<T> 인터페이스의 "터보 방식"구현을 구현할 수있을만큼 기본 사항이어야합니다.
0

저는 C#의 다른 데이터 구조와 List를 비교하는 방법을 찾고 있다고 생각합니다. 질문을 필터링하면 좋을 것입니다.

관련 문제