2012-05-04 9 views
0

나는 http://www.haskell.org/ghc/docs/latest/html/libraries/base/src/GHC-IO-FD.html을 보았다. 상태 :우리 자신의 dEFAULT_FD_BUFFER_SIZE 값을 변경할 수 있습니까?

-- We used to use System.Posix.Internals.dEFAULT_BUFFER_SIZE, which is 
-- taken from the value of BUFSIZ on the current platform. This value 
-- varies too much though: it is 512 on Windows, 1024 on OS X and 8192 
-- on Linux. So let's just use a decent size on every platform: 
dEFAULT_FD_BUFFER_SIZE :: Int 
dEFAULT_FD_BUFFER_SIZE = 8096 

우리 자신을 위해 dEFAULT_FD_BUFFER_SIZE 값을 변경할 수 있습니까?

+0

8096은 흥미로운 크기입니다. 그것은 단순한 오타입니까, 아니면 96 바이트의 오버 헤드가 예상됩니까? (하지만 소스 파일의 아무 곳에 나 주석으로 호출되지 않습니다)? – dave4420

답변

1

소스에서 변경하고 GHC를 새로운 크기로 컴파일 할 수 있습니다. 성능에 영향을 미칠 수 있지만 (극단적 인 값에 대해서는 분명히 해당 될 것입니다), 그렇지 않은 경우에는 눈치 채지 못할 것입니다.

그 외의 경우 변경할 수 없습니다.

base의 소스에서 빠른 검색은 하나 개의 사용 사이트를 보였다는

instance BufferedIO FD where 
    newBuffer _dev state = newByteBuffer dEFAULT_FD_BUFFER_SIZE state 
    fillReadBuffer fd buf = readBuf' fd buf 
    fillReadBuffer0 fd buf = readBufNonBlocking fd buf 
    flushWriteBuffer fd buf = writeBuf' fd buf 
    flushWriteBuffer0 fd buf = writeBufNonBlocking fd buf 

그래서 당신은 컴파일 후 다른 값을 연결 수있는 곳이 없습니다.

관련 문제