Q&A

  • reserved word 'packed'
record 선언할 때 packed record 라는 것이 있던데 이것을 상용하면 일반



record와 무엇이 다르죠? help를 찾아보면 '정렬'된 데이터에대한 이야기



같은데 언뜻 감이 오질 않습니다.





1  COMMENTS
  • Profile
    김정완 1999.08.10 20:11
    Lyle 께서 말씀하시기를...

    > record 선언할 때 packed record 라는 것이 있던데 이것을 상용하면 일반

    >

    > record와 무엇이 다르죠? help를 찾아보면 '정렬'된 데이터에대한 이야기

    >

    > 같은데 언뜻 감이 오질 않습니다.

    >

    >



    안녕하세요 ^^; 괴물입니다.



    자세히는 알지 못하니 참고만 하시기 바랍니다.

    (도움말만 보더라도 어느정도 자세하게 나와있는데 그게 짧아서 --;)



    컴퓨터 프로세서(CPU)는 메모리를 억세스(참조)할때 워드(16비트)로

    경계선 정렬된(Word Boundary) 데이타일 경우 한큐에 처리를 할수가 있다고

    합니다.(제가 군에 가기전만 해도 4바이트라고 한거 같은데 .. --;)

    경계선 정렬되지 않은 데이타라면 그 포지션을 계산한다거나, 읽어(Fetch)

    올시 처리가 약간 느려지게도 된답니다.(Shift, And)



    델파이에서는 디폴트로 $A+로 되어 있습니다.(Align Field: 경계선 정렬)

    속도를 증가시키기 위해 워드단위로 정렬되지 않은 데이타일경우 끝에

    바이트를 추가한다는것 같군요 .. (그래서 전부터 byte나 shortint형은

    쓰지말자(?) 라고도 했던거 같은데 역시 그것이 짧아서..)

    이 쓸데없는 바이트를 추가하는 것이 싫을때.. 속도와는 무관하게

    데이타의 사이즈를 줄인다(?).. 라면.. 이때 쓰이는게 packed죠.. ($A-).

    하위버전 호환성을 위해(integer는 shortint, string는 shortstring등)서도

    쓰여진다는 얘기도 있네요..



    헌데, packed된 레코드를 사용할 경우에는 데이터 처리가 느려지고,

    문자배열(Character array)같은 경우는 형호환성(형변환같은 경우)에도

    영향을 끼친다고 합니다. 헌데..VCL의 소스들을 보면 한결같이 다

    packed니.. -__-; (함 grep으로 찾아보세요 :-( )



    Windows API가 어쩌구하면서 16비트(2바이트, Word) 단위로 증가되는 것들을

    참조할대 참 빠르다고 하는거 같은데.. (정확하게좀 알려주세요~)





    아무래도 기초가 탄탄하신 그분(?)이 델파이 메모리 관리자에 대한 내용과

    함께 이 해답을 해주셔서 델피언이 되려는 우리들의 뇌를 시원하게 만들어

    주시길 바라며..



    ps. 꼭 jms같네요.. 그분.. -__-;