[C#] Stream.Seek (0, SeekOrigin.Begin) 또는 Position = 0

스트림을 시작으로 재설정해야하는 경우 (예 🙂 MemoryStream사용하는 것이 가장 좋습니다.

stream.Seek(0, SeekOrigin.Begin);

또는

stream.Position = 0;

나는 둘 다 잘 작동하는 것을 보았지만 하나가 다른 것보다 더 정확한지 궁금해 했습니까?



답변

절대 위치를 설정할 때는 위치를 사용하고 상대 위치를 설정할 때는 찾기를 사용하십시오. 둘 다 편의상 제공되므로 코드의 스타일과 가독성에 맞는 것을 선택할 수 있습니다. 위치에 액세스하려면 스트림을 검색 할 수 있어야 안전하게 교환 할 수 있습니다.


답변

두 가지 방법에 대한 소스 코드를 보면 다음을 찾을 수 있습니다.

비용은 거의 동일합니다 (3 ifs 및 일부 산술). 그러나 이것은 같은 Position = 0상대 오프셋이 아닌 절대 오프셋으로 점프하는 경우에만 해당되며 Position += 0,이 경우 Seek가 약간 더 좋아 보입니다.

그러나 우리는 소수의 정수 산술 및 ifs 검사의 성능에 대해 이야기하고 있다는 것을 명심해야합니다. 이는 벤치마킹 방법으로는 정확하게 측정 할 수 없습니다. 다른 사람들이 이미 지적했듯이 유의미한 / 탐지 할 수있는 차이는 없습니다.


답변