2014-07-06 1 views
-3

내 서버 API가 C# 문자열을 기대할 때 어느 것이 좋습니다? 어느 것이 가장 낮은 문자열 길이가됩니까?unity3d C# 객체를 문자열로 다시 배열

1) Protobuf 넷 오브젝트 < 변환 protobuf 그물 사용 -> 바이트 배열 바이트 배열 변환 사용 Convert.ToBase64String 방법 < -> 문자열

2)를 사용 JSON 닷넷 직접 변환 개체 < -> string

우리는 byte [] 서버 API로 프로젝트에서 Protobuf-net을 사용하고 있습니다. 이제 우리 서버는 바이트 [] 대신 문자열 API로 마이그레이션 중입니다. 우리가 Json .Net으로 옮겨야하는지, 아니면 protobuf-net을 가지고 있어야 하는지를 확신 할 수 없으며, byte [] 변환에 추가 문자열을 변환하기 위해 Base 64를 사용합니다.

무엇을 제안합니까?

+6

:)을 도왔다. 읽기 [this] (http://ericlippert.com/2012/12/17/performance-rant/) – EZI

+0

벤치마킹 결과에 대해 묻는 일반적인 장점에 대해 궁금합니다. 대부분의 경우가 1 쓰기 위해 <1 시간 걸리는 테스트 또는 2. API 웹 사이트에 게시 된 공식 벤치 마크. 수행되지 않은 복잡한 벤치 마크의 경우에는 ... 그렇다면 다른 사람에게 도박을하는 것만으로도 당신을 위해 또는 그렇게 먼 과거에 이미 해내 야합니다. 어떤 이유로 든 다시이 사이트에 도움이되지 않습니다. –

+0

@EZI 링크를 공유해 주셔서 감사합니다. 네 말에 전적으로 동의 해. 그러나 누군가가 이미 비교를했거나 같은 배에 있었다면. 나는 나 자신을 시험하지 않고 그들의 경험에서 배우는 것을 더 좋아한다. – user3504386

답변

0
좋아

, 그래서 이것은 당신이 둘 사이에 결정하는 데 도움을 줄 수 바라고 있어요 내 생각 과정입니다 :

더 나은 우리가 문제의 상황의 더 나은 이해를 가질 필요가되는 하나 결정하기 전에. 최적화는 항상 잘 정의 된 "적합성"매개 변수로 수행해야하는 작업입니다. 내가이 의미하는 것은 : 대부분의 CPU 사용에 의해 제한하는 경우

  • , 내가 실행에 더 많은 CPU를 사용하는 코드를 테스트하십시오 것입니다.
  • 대역폭이 문제라면 가장 작은 패킷을 보내는 방법을 살펴보고 싶을 것입니다. (이 경우, 바이너리 직렬화의 base64가 답이되어야한다.)
  • 코드 가독성이 중요한 요소라면, 쓰는 데 필요한 텍스트를 적게 차지하면서 읽기 쉽고 이해하기 쉬운 코드를 찾아야한다. (이 경우에는 JSON 경로가 더 나은 가독성을 가지고 있다고 의심됩니다)

일반적으로 과도한 최적화에주의해야합니다. 주로 "최적화되지 않은"코드로 인해 손실되는 것보다 생각하고 비교하는 데 더 많은 시간을 소비 할 수 있기 때문입니다. 즉, 병목을 명확하게 정의 할 수있을 때만 최적화하십시오.

희망이 두 가지 중 하나가 내 서버 API는 C#을 단순 string` 기대하고 주어진 더 성능이 좋은 어느`

관련 문제