2011-10-01 3 views
1

스토리지에서 특정 크기로 데이터를 정렬 할 때 이점이 있습니까? 예를 들어, 1 바이트를 사용하여 정보 또는 4 바이트를 저장하는 옵션이있는 경우 (스토리지 크기가 중요하지 않다고 가정하고 최적화 만 가정)?데이터 크기 및 디스크 액세스

나는이 문제에 관해서 물어 본다. 왜냐하면 만약 당신이 메모리 값을 가지고 있다면 "중요하다"는 것을 알기 때문이다. (그리고 그 이유는 .NET 부울이 4 바이트가되는 이유이다. 대지).

나는 을 생각하지 않습니다.은 중요하지만 .NET Framework (C#)를 사용하고 있습니다.

답변

1

파일의 특정 레코드를 가져와야하는 경우 일종의 인덱스 또는 고정 레코드 크기가 필요하지만 이는 레코드의 개별 부분이 아닌 전체 레코드를위한 것입니다. 나는 일반적으로 스토리지 내에서 4 또는 8 바이트 경계에 데이터를 정렬하기 위해 어떤 큰 길이도 가지 않습니다. 물론, 한 번에 하나의 레코드를 메모리의 정렬 된 위치로 읽는다면 정렬 된 데이터로 변환하여 모든 변환을 수행하게되므로 어느 정도는 서로 얽혀 버릴 수 있습니다.하지만 변환은 다음과 같습니다. 에 자주 액세스하는 대신 일회성 일 가능성이 높습니다. 변환 후.

저장소 크기는 물론 최적화에 중요합니다. 디스크에서 데이터를 더 적게 읽는 것이 더 많이 읽는 것보다 저렴합니다 (일반적으로 ...).

고정 된 레코드 크기와 같은 특정 요구 사항이 없으면 가능한 한 을 사용하기 쉽게 저장 장치를 설계하려고합니다.. 실적에 대한 특정 관심 분야가있는 경우이를 프로파일 링해야합니다. 예를 들어, 일 수 있습니다. UTF-8보다 문자열을 인코딩하는 데 UTF-16을 사용하는 것이 더 효율적입니다. 인코딩 및 디코딩이 더 적은 작업을 필요로하기 때문에 ... 더 많은 공간을 차지할지라도. 당신은 가정을하기보다는 이것들을 시험해야한다. 스토리지 포맷을로드하는 위치가 네트워크, 기계 디스크, 솔리드 스테이트 드라이브와 같은 큰 차이를 만들 것이라는 점에 유의하십시오. 이는 서로 다른 성능 특성을 갖게되어, 모든 경우에 가장 빠릅니다.

+0

Jon, 답장을 보내 주셔서 감사합니다. acutal 게시물의 저장 매체에 대해 조금 명확하지 않지만 직접적인 하드 디스크 일 것입니다. 이 경우에는 읽기 속도가 가장 중요하며 레코드 크기는 일정합니다 (예, UTF-16이 가장 많이 사용됩니다). 부울 정보를 저장하기 위해 단일 바이트 값보다 bool (4 바이트) 값을 사용하여 속도 향상을 얻을 수 있는지 궁금합니다. 가능성이 가장 높을 것 같은데요. 바이트를 사용하면 도움이 될 것입니다.하지만 그래도 테스트 할 수는 있습니다. – Anthony

관련 문제