Jump to content
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr ×
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr
  • RAD 스튜디오 버전별 신기능:
    10.3 리오

    10.3 리오 RTL

       (0 reviews)

    << 위로 이동 (최신 버전 포함 모든 버전)

    RAD 스튜디오 10.3 리오 "새 기능 한글 요약본: RTL" 입니다.
    모든 새 기능,  강화된 기능, 버그 픽스 등에 대해서는 Docwiki의 What's New 10.3 (영문 보기, 한글번역 보기) 와 관련 페이지를 보기 바랍니다.

    10.3 리오 - RTL 관련 주요 업데이트 요약

     

    델파이 RTL 10.3에서는 JSON과 HTTP와 관련된 성능과 표준 준수가 크게 향상되었다. 

    데이터 구조(Data Structure) 증가 전략 변경

    일부 데이터 구조(TStringList, TList, TList<T>, TQueue<T>, TSTack<T>)에서는 항목이 기존 용량에 가득차서 확장을 해야 할 때 더 유연하게 용량이 증가되도록 하는 전략이 반영되었다. 과거에는 무조건   기존 용량 만큼만 더 늘어나도록 정해져있었다. 이 새 증가 전략은 SysUtils.pas 유닛 안에 있는 공유 글로벌 함수로 구현되었다.

    function GrowCollection(OldCapacity, NewCount: Integer): Integer; 

    게다가, 개발자는 이와 호환되는 새 함수를 작성하고, 글로벌 프로시저인 SetGrowCollectionFunc를 호출함으로써, 자신에게 알맞게 구현할 수 있다

    만약 사용자 정의된 "컬렉션 증가 함수"를 런타임 패키지 안에 설치한다면, Exit 할 때 반드시 nil이 되도록 지정해야 한다. 그렇지 않으면 런타임은 패키지가 내려간(unload) 후에 이 존재하지 않는 함수를 부르려고 시도할 수도 있을 것이다.

    TStringBuilder 변경

    성능 향상을 위해 TStringBuilder의 일부가 변경되었다. 메모리 증가 전략 면에서 유사한 변경이 있었으며, 중복된 코드를 제거하는 등 전반적인 구현을 깔끔하게 정리했다.

    TStringBuilder 열거형(enumerator)이 최적화 되었다. 

    또한 TStringBuilder.ToString 메소드 파라미터 하나가 추가되었다. 추가된 파라미터는 ToString (UpdateCapacity: Boolean)이다. ToString(True)이면, TStringBuilder를 더이상 변형할 필요가 없다고 예상되는 상황에서 성능이 더 좋아진다. 데이터가 복사되는 량이 줄어들기 때문이다.

    JSON 향상

    정확성과 성능 면에서 JSON 처리 및 해독(parse)이 크게 향상 되었다. 

    리스트 관련 향상

    • TList와 TDictionary에 퍼블릭 프로퍼티(들)이 새로 추가: 초기화된 후에 해당 리스트의 비교자(comparer, 정렬 위한 비교 동작에 대한 정의)에 접근할 수 있다. 
    • TDictionary<TKey,TValue>에 TryAdd 메소드가 추가
    • TObjectList<T>에 ExtractAt(Index: Integer): T 가 추가
    • TList<T>.IndexOf 성능 향상
    • 일반적인 TList<T>, TQueue<T>, TStack<T> 리스트에 항목을 추가하는 성능 향상. 대체로TList<T>.Add는 30%까지 더 빨라졌다.
    • TList, TStrings, TComponent, TCollection, TList<> 열거형(enumerator) 최적화. 반복속도 자체만 보면 "for in" 루프는 2.5~4배 빨라졌음
    • 컬렉션 열거자(enumerator) 타입의 부분으로, RAD 스튜디오는 반복(iteration)이 완료되었을 때 해당 열거자의 상태를 공식적으로 정의한다: "MoveNext가 False를 반환한 후에는 열거자 상태가 유효하지 않으며 열거자는 반드시 해제되거나 다시 생성되어야하며, 더 이상 액세스해서는 안 됩니다."

    기타 RTL 변경

    • TStringHelper.Split은 이제 StrUtils에 있는 글로벌 함수인 SplitString과 동일한 결과를 만든다.
    • zlib가 1.2.8로 업그레이드 되면서 몇가지 버그 픽스가 있었다 (그리고 이제는 RAD 스튜디오 C++ 64-bit 컴파일러에서 컴파일될 수 있다).  
    • PCRE가 8.42로 업그레이드 되면서 윈도우에서 UTF-16을 지원한다 (그리고 이제는 RAD 스튜디오 C++ 컴파일러에서 컴파일될 수 있다 
    • Unicode 테이블 (System.Character 유닛)에서 유니코드 v11.0을 지원한다.
    • TStringHelper.Split 메소드에서 지금까지와는 또 다른 동작을 할 수 있도록 지정할 수 있다. 새로 생긴 옵션은 TStringSplitOptions.ExcludeLastEmpty이다. 
    • SysUtils 유닛에 있는 프로시저와 함수의 순서를 재정돈하여 인라인(inline)을 더 잘 지원할 수 있도록 했다.
    • System 유닛에 새 별칭(alias)인 Float32과 Float64가 추가되었다.

    앱테더링(AppTethering)에서 긴 문자열 전송

    현재 (앱테더링에 사용되는) TTetheringAppProfile 클래스의 SendString / AsString은 대략 1,400 문자까지 길이가 제한되어 있다. 10.3 에서는 다음과 같은 변경과 추가를 통해 호환성을 유지하면서도 긴 문자열을 다룰 수 있도록 했다.

    • TTetheringAppProfile에 새 메소드인 SetLongString과 SendLongString이 추가되었으며, 이 메소드들은 문자열이 아니라 스트림을 사용하여 통신한다.
    • TResourceValue.AsString은 수신한 스트림을 문자열을 반환하는 것이 가능하면 그렇게 하고, 가능하지 않으면 수신한 문자열을 반환한다. 따라서 일반 문자열과 "긴 문자열" 모두를 처리할 수 있다.

    TTetheringAppProfile.SendString은 문자열 길이가 1.3 KB보다 작은 경우에 사용하고, 그 이상인 경우에는 TTetheringAppProfile.SendLongString을 사용해야 한다.

    TMemIniFile 최적화

    RAD 스튜디오 10.3 리오에서는 TMemIniFile 구현이 최적화 되었다. TMemIniFile 읽기와 생성(constructing)이 10~25배 빨라지고 메모리 사용은 절반으로 감소했다. TMemIniFile의 다른 동작 역시 향상되어서 이전 구현에 비해 50~100% 더 빨라졌다.

    또한 10.3에서는 스트림에서 TMemIniFile을 적재(load)할 수 있는 기능이 추가되었다. 즉 생성자 오버로드 2가지가 더 추가되었다.

    • TMemIniFile.Create(Stream)
    • TMemIniFile.Create(Stream, UseLocale)

    이 생성자 파라미터 2개는 해당 클래스 안에서 사용할 수 있도록 유지되며 새 프로퍼티를 통해 외부에 공개된다.

    • Stream 프로퍼티
    • UseLocale 프로퍼티



    User Feedback

    표시할 리뷰가 없습니다.


×
×
  • Create New...

중요한 정보

이용약관 개인정보보호정책 이용규칙 이 사이트가 더 잘 작동하기 위해 방문자의 컴퓨터에 쿠키가 배치됩니다. 쿠키 설정 변경에서 원하는 설정을 할 수 있습니다. 변경하지 않으면 쿠키를 허용하는 것으로 이해합니다.