중첩된 구조체를 하나 던지면 재귀로 순회해서 reflection으로 각 필드 타입을 조사해서 serialize하는 아주 간단한 함수인데 18바이트짜리 구조체 던지니까 18번 힙할당하고 할당 크기는 340바이트 콜 한번당 수행시간은 2us입니다.
이거 프로덕션에 쓰면 사표도 같이 써야겠죠?
댓글 8
도대체 뭘한거야? - dc App
익명(118.43)2020-04-12 03:07
프로토콜이나 규칙 정해놓은거 아닌 이상 정형화하기 어려울텐데, 당장 char * 있어도.. 아하.. strlen. struct 에 멤버가 struct 들어가 있다면.... 일단 sizeof 로 잡으면 되고. char * 은 strlen, int * 은 정형화된 방법 없고.
익명(218.147)2020-04-12 03:12
struct 멤버로 type 이라는 변수를 두면 유니버설 솔루션 나오겠네, int *, uint * 이런거는 Bytes 라는 이름의 struct 로 만들고, Bytes 멤버로 uint8_t *data, size_t data_len 이렇게 하면 유니버설 솔류션 가능함
익명(218.147)2020-04-12 03:14
우선 프로토콜이나 규칙을 정하는게 좋을 거임
익명(218.147)2020-04-12 03:14
그리고 struct 에서 첫번째 멤버를 type 라 하고 다른 이름의 struct 의 멤버를 type 라 하고 두번째 멤버부터는 서로 달라도 캐스트 연산을 통해 서로 다른 struct 이더라도 type 변수에 접근가능함. union 비스무리해지지 ㅋㅋ
도대체 뭘한거야? - dc App
프로토콜이나 규칙 정해놓은거 아닌 이상 정형화하기 어려울텐데, 당장 char * 있어도.. 아하.. strlen. struct 에 멤버가 struct 들어가 있다면.... 일단 sizeof 로 잡으면 되고. char * 은 strlen, int * 은 정형화된 방법 없고.
struct 멤버로 type 이라는 변수를 두면 유니버설 솔루션 나오겠네, int *, uint * 이런거는 Bytes 라는 이름의 struct 로 만들고, Bytes 멤버로 uint8_t *data, size_t data_len 이렇게 하면 유니버설 솔류션 가능함
우선 프로토콜이나 규칙을 정하는게 좋을 거임
그리고 struct 에서 첫번째 멤버를 type 라 하고 다른 이름의 struct 의 멤버를 type 라 하고 두번째 멤버부터는 서로 달라도 캐스트 연산을 통해 서로 다른 struct 이더라도 type 변수에 접근가능함. union 비스무리해지지 ㅋㅋ
리플렉션이 존나 무거워서 그런거같은데 데이터파싱을 다르게해야할거같은데
유니온 - dc App
deserialize면 몰라도 serialize면 할당 한번에 끝나는데