Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon 유창한 바인딩의 성능은 MVVMCross의 스위스/티베트 바인딩 표현과 어떻게 비교됩니까?


유창한 바인딩의 성능은 MVVMCross의 스위스/티베트 바인딩 표현과 어떻게 비교됩니까?


MVVMCross에서 유창한 바인딩의 성능을 스위스/티베트 바인딩 표현과 비교할 때 몇 가지 요인이 작용합니다. 자세한 분석은 다음과 같습니다.

바인딩 유형의 개요

- 유창한 바인딩 : 이들은 C# 코드로 생성 된 유형- 안전 바인딩 표현입니다. XML 레이아웃 파일이 쉽게 편집 할 수없는 iOS 및 UWP와 같은 플랫폼에서 특히 유용합니다. 유창한 바인딩은 뷰 속성을 바인딩하여 모델 속성을보기 위해 명확하고 강하게 유형되는 방법을 제공하며, 이는 컴파일 시간에 유형 불일치를 포착하여 런타임 오류를 줄이는 데 도움이 될 수 있습니다 [1] [4].

- 스위스/티베트 바인딩 표현식 : XML 레이아웃 파일 (예 : Android의 AXML)에 일반적으로 사용되는 문자열 기반 바인딩 표현식입니다. 스위스 바인딩은 더 유연하며 연결 ​​및 조건부 논리와 같은 복잡한 표현이 가능합니다. 티베트 결합은 결합 표현을위한 미니 언어와 유사한 고급 구문을지지함으로써이를 확장한다 [1] [6].

성능 비교

컴파일 타임 대 런타임 평가

- 유창한 바인딩 : 유창한 바인딩은 C#로 정의되므로 컴파일 시간에 평가됩니다. 이는 모든 유형 오류 또는 구속력 문제가 조기에 잡히기 때문에 개발 효율성을 향상시킬 수 있습니다. 그러나 런타임의 실제 성능은 일반적으로 바인딩 설정이 여전히 런타임에 실행되기 때문에 다른 바인딩 방법과 유사합니다.

- 스위스/티베트 바인딩 : 이러한 바인딩은 XML 파일의 문자열로 정의되므로 런타임에 평가됩니다. 이는 바인딩 표현식의 오류가 앱이 실행될 때만 발견되므로 제대로 테스트하지 않으면 개발주기가 느려질 수 있습니다. 그러나, 런타임 평가는 바인딩이 설정되면 유창한 바인딩보다 본질적으로 느리게 만드는 것은 아닙니다.

런타임 오버 헤드

- 유창한 바인딩 : 유창한 바인딩의 오버 헤드는 코드에서 필요한 바인딩 객체를 직접 생성하기 때문에 최소화됩니다. 이 직접적인 접근 방식은 런타임시 문자열 표현식을 구문 분석하는 것보다 약간 더 효율적일 수 있습니다.

- 스위스/티베트 바인딩 : 런타임시 XML의 바인딩 표현을 구문 분석해야하므로 유창한 바인딩에 비해 약간의 오버 헤드가 도입됩니다. 그러나이 오버 헤드는 매우 복잡하거나 수많은 바인딩을 다루지 않는 한 일반적으로 작습니다.

개발 효율성 및 오류 처리

- 유창한 바인딩 : 컴파일 타임 체크로 인해 더 나은 개발 효율성을 제공하여 디버깅 런타임 바인딩 문제를 줄임으로써 간접적으로 성능을 향상시킬 수 있습니다.

- 스위스/티베트 바인딩 : 복잡한 표현에 더 유연하지만 더 많은 런타임 검사가 필요하며 제대로 테스트하지 않으면 개발이 느려질 수 있습니다.

결론

원시 성능 측면에서, 유창한 및 스위스/티베트 바인딩은 일반적으로 일단 설치되면 비슷합니다. 그러나 유창한 바인딩은 개발 효율 및 컴파일 타임 오류 감지의 장점을 제공하여 디버깅 시간을 줄임으로써 전반적인 응용 프로그램 성능을 간접적으로 개선 할 수 있습니다. 스위스/티베트 바인딩은 복잡한 시나리오에서 더 많은 유연성을 제공하지만 더 많은 런타임 확인이 필요합니다. 이들 사이의 선택은 종종 프로젝트의 특정 요구와 코드 기반 대 XML 기반 바인딩 정의에 대한 개발자의 선호도에 달려 있습니다.

인용 :
[1] https://blog.ostebaronen.dk/2018/01/mvvmcross-binding-target.html
[2] https://stackoverflow.com/questions/46522577/mvvmcross-issues-with-fluent-binding
[3] https://stackoverflow.com/questions/48422489/mvvmcross-tibet-binding-to-viewmodel-tipl
[4] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[5] https://www.youtube.com/watch?v=3-CT97SBMXM
[6] https://stackoverflow.com/questions/48824612
[7] https://github.com/mvvmcross/mvvmcross/issues/1342
[8] https://github.com/mvvmcross/mvvmcross
[9] https://www.mvvmcross.com/documentation/fundamentals/value-converters
[10] https://stackoverflow.com/questions/48066268/xamarin-mvvmcross-fluent-binding-on-uwp
[11] https://crosscuttingconcerns.com/mvvmcross-fluent-databinding