실제로 스트림의 데이터 형식이 uint 형식입니다. System.IO.Stream을 사용하면 바이트 배열로 내용을 읽을 수 있지만 바이트를 읽은 다음 바이트 배열의 길이가 1/4 인 uint 배열로 변환하지 않으려합니다. uint 배열의 메모리에 직접 읽어서 시간을 절약하고 싶습니다.관리되는 스트림을 C#에서 직접 uint 배열로 읽는 방법?
비보안 C++의 경우 매우 간단합니다. 포인터를 uint 배열로 보내면 완료됩니다. 그러나 C#에서는 그렇게 간단하지 않습니다. 나는 다른 uint 배열과 같은 메모리 주소를 가진 바이트 배열을 생성하고 Stream.Read()의 매개 변수로 바이트 배열을 보내서 Stream.Read()가 바이트 배열에 내용을 쓸 때 uint 배열에서도 마찬가지입니다. 그러나 나는 Marshall 클래스를보고이 문제에 대한 해결책을 찾지 못했습니다. 어떤 아이디어?
uint 배열의 주소를 사용할 수 있지만 Read() 메서드는 포인터를 허용하지 않습니다. 관리 바이트 배열 만 허용합니다. 그리고 포인터를 사용하여 바이트 배열의 메모리를 uint 배열의 메모리에 복사 할 수 있지만이 배열은 uint 배열을 직접 읽지 않습니다. 여기서 중요한 것은 시간입니다. – neuron
항상 관리되지 않는 C++로 구현을 작성한 다음 P/Invoking을 통해 C# 결과를 가져 오는 옵션이 있습니다. –
관심없는 분 : 저흰 뭐지? 데이터 세트의 크기는 어느 정도입니까? 알고리즘은 얼마나 자주 호출됩니까? 그것은 대화식이어야합니까, 아니면 서버 어딘가에있는 직업입니까? –