megajson 고성능 json 서열화, 반서열화 도구

1120 단어 json
go가 자체로 가지고 있는 encoding/json은 json의 서열화와 반서열화를 지원하지만 반사에 기반한 것으로 다음과 같은 몇 가지 단점이 있다.
4
  • 반사는 성능이 떨어지는 대명사이며 컴파일할 때 최적화할 수 없다

  • 4
  • Public 필드만 가능하고 반사 라이브러리는 노출된 필드만 반사할 수 있습니다. 이것은 private 필드를 JSON으로 전환할 수 없다는 것을 의미합니다

  • 4https://github.com/benbjohnson/megajson 이 문제에 대해 최적화를 했습니다. 이것은 코드 생성 도구입니다. go/parser와 go/ast 패키지를 사용하여 당신 유형의 실체에 대한 사용자 정의 서열 번호와 반서열화 코드를 생성합니다.이곳의 서열 번호와 반서열화는 당신의 데이터 유형을 알고 있기 때문에 반사하지 않고 위의 문제를 해결합니다.
    테스트를 통해 Go 1.2에서 Megajson은 encoding/json 패키지보다 2배의 성능을 향상시켰다.
     
    설치 방법:
    $ go get github.com/benbjohnson/megajson

     
    사용:
    megajson 명령을 직접 실행하면 필요한 서열화 및 반서열화 파일이 생성됩니다.
    $ megajson mypkg/my_file.go

    이렇게 하면 두 개의 파일이 생성됩니다.
    mypkg/my_file_encoder.go
    mypkg/my_file_decoder.go

     
    그 사용은 비교적 간단하다.
    err := NewMyStructEncoder(writer).Encode(val)
    err := NewMyStructDecoder(reader).Decode(&val)

    좋은 웹페이지 즐겨찾기