이 글은  Marco Cantu가 작성한 엠바카데로 블로그 글을 번역(및 일부의역)한 것입니다


pastedimage1590142883818v1.png-2080x0.png

델파이 런타임 라이브러리(이하 RTL)는 가장 기본적인 요소 중 하나입니다.  UI 라이브러리들(VCL, 파이어몽키 등), 데이터베이스 액세스 라이브러리, 써드파티 컴포넌트들이 모두 핵심 RTL과 연관되어 있기 때문이죠. 그래서 RTL의 변경은 모든 개발자들에게 영향을 미칩니다. 이번 10.4 버전의 RTL은 다음의 기능들이 업데이트되었습니다.

 

새로운 비트 연산 표준

로우레벨(low-level) 비트 연산자의 새로운 표준 기능이 도입되었습니다:

  • CLZ (Count Leading Zeros) : 최상위 비트부터 시작해서 최초 1비트가 나올 때까지의 0의 개수 카운트합니다. 예를 들어 매개변수 X가 있고, 이 X가 0인 경우 CoundLeadingZeros32의 비트 반환 값은 32가 되고 CoundLeadingZeros64라면 반환 값은 64입니다.
  • CTZ (Counting Trailing Zeros) : 최하위 비트부터 시작해서 최초로 1비트가 나올 때까지의 0의 개수를 카운트 합니다. 예를 들어 매개변수x가 있고, 이 X가 0인 경우 CountTrailingZeros32의 비트 반환값은 32, CoundTrilingZeros64의 반환값은 64입니다.
  • Count Population : 매개 변수 X의 1비트 개수를 카운트합니다. 예를 들어 0000 0101 이라면, 2라는 값을 리턴하는 것이죠. CountPopulation32의 경우 32, CountPopulation64의 경우 64가 반환됩니다.

 

전통적인 클래스에 추가된 기능들

  • TCustomIniFile 클래스에 새로운 메소드 WriteInt64와 ReadInt64 가 추가되었습니다.
  • TGUID 타입으로 새로운 메소드 IsEmpty 가 추가 되었습니다
  • TJSONArray 클래스의 Items 속성이 기본 배열 속성으로 설정되어있습니다. 이제 myJArray.Items[2] 대신 myJArray[2]로 대체 가능합니다.

 

더 좋아진 스트림 버퍼링

TStream 클래스의 CopyFrom 함수는 이제 데이터를 복사 시, 새로워진 상수 버퍼를 이용합니다.(60K로 설정) 이는 스트림의 데이터가 큰 스트림 복사 시 매우 비효율 적이었습니다. 이번에 상수 버퍼의 기본 크기가 1MB로 변경되었으며, 상황에 따라 버퍼 크기를 설정할 수 있도록 매개변수가 추가되었습니다. 새로운 메소드 형식은 다음과 같습니다.

// class TStream
function CopyFrom(const Source: TStream; Count: Int64 = 0;
  BufferSize: Integer = $100000): Int64;

 

성능 최적화

  • JSON 읽기 최적화 : TJSONReader의 속도가 50% 더 빨라졌습니다.
  • 정렬된 StringList를 다른 StringList에 할당할 수 있도록 최적화 되었습니다.
  • RTTI 성능이 더욱 좋아졌습니다:

         - TRttiMethod.Invoke가 최대 4 배 더 빨라졌습니다.

         - TVirtualInterface 호출이 최대 1.7 배 더 빨라졌습니다.

         - TRttiType.GetXxxx (AName) 메소드가 최대 10 배 더 빨라졌습니다.

         - TValue의 경우 여러 작업이 더 빠릅니다.

  • System.Classes의 QuickSort 작업이 더 효율적으로 향상되었습니다.

 

FreeAndNil

인터페이스 참조 및 기타 지원되지 않는 데이터 유형과 함께 사용하지 못하도록 FreeAndNil  프로시저의 형식을 업데이트했습니다. 이제 TObject에 대한 참조값을 매개변수 값으로 넘기도록 선언되었습니다.

procedure FreeAndNil(const [ref] Obj: TObject); inline;

이것은 FreeAndNil을 잘못 사용하면 이제 컴파일러 오류가 발생한다는 것을 의미합니다. 과거에는 잘못 사용해도 발견되지 않아 버그가 발생하기도 했습니다. 매개변수가 const로 선언되더라도 by-reference 변수는 실제로 수정된다는 점에 유의하십시오.

 

추가된 다양한 기능

  • Windows Server Core에서 실행되는 특정 콘솔 앱을 차단하는 일부 종속성을 제거했습니다.
  • TStringHelper.GetHashCode 메소드는 문자열을 해시하기 전에 대문자로 표시하지 않도록 업데이트되었으므로 결과는 TStringComparer 클래스와 같은 다른 내부 작업과 일치합니다.

또한 병렬 프로그래밍 라이브러리, 앱 테더링, REST 및 HTTP 클라이언트 라이브러리 및 기타 다른 델파이 RTL 하위 시스템에 대해서도 상당한 노력을 기울였습니다. 이러한 개선사항들이 상대적으로 미미하더라도 델파이 개발자들이 작업하는데 긍적적인 영향을 주길 바랍니다.

 

 

번호 제목 글쓴이 날짜 조회 수
공지 [DelphiCon 요약] 코드사이트 로깅 실전 활용 기법 (Real-world CodeSite Logging Techniques) 관리자 2021.01.19 15441
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 13961
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 16499
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 22055
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 23268
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 18923
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 39255
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 174713
423 [발표자료] RAD Studio XE8 출시 세미나 관리자 2015.05.01 612
422 [DelphiCon 요약] 델파이 코드 빠르게 작성하기 (Code Faster in Delphi) 관리자 2020.12.22 611
421 헬스케어 분야에서의 델파이 - 코로나에 맞서며 file 김원경 2020.04.29 610
420 모바일 앱 개발, 가장 좋은 선택은? 관리자 2021.03.18 609
419 파이어몽키 TListBox 컴포넌트 사용방법: 사용자 정의 아이템데이터 동적으로 표시하기 file 김원경 2020.01.20 609
418 [10.4 시드니 신기능] 겟잇 패키지 매니저(GetIt Package Manager) 개선 험프리 2020.05.21 606
417 [도서/PDF/소스코드] 델파이 Begin...End - 5장. 디버깅 사용하기 관리자 2019.08.09 606
416 델파이 코드 컨버전 빠르게 완료하기 관리자 2019.11.06 600
415 이 달의 기술자료 - 2018년 10월 file 험프리 2018.10.01 600
414 Connascence: 커필링을 측정하는 방법(닉 하지스) 험프리 2016.10.17 597
413 파이어몽키를 사용하여 멀티 플랫폼/아키텍처 용 소프트웨어 개발 file 김원경 2020.03.25 596
412 [10.3 리오][업데이트 2] C++ 코드인사이트 기능 업데이트 관리자 2019.08.23 595
411 [도서/PDF/소스코드] 델파이 Begin...End - 4장. 컴포넌트 라이브러리와 패키지 관리자 2019.08.09 595
410 VCL의 역할과 방향 - 마르코 칸투의 VCL 이야기! 관리자 2019.12.17 593
409 IDE의 -r 커맨드라인 스위치로 IDE 시작 오류를 해결할 수 있습니다. file 험프리 2016.01.08 592
408 [프로그래밍 애피타이저] 9장 저장프로시저와 트리거 file 김원경 2020.04.09 591
407 [도서/PDF/소스코드] 델파이 Begin...End - 15장. 웹 브로커를 이용한 웹 프로그래밍 [1] 관리자 2019.08.20 591
406 [도서/PDF/소스코드] 델파이 Begin...End - 9장. 예외(Exception) 처리 [1] 관리자 2019.08.19 591
405 올 해의 기술자료 TOP 10 - 개발자들이 가장 많이 클릭한 기술자료는? 관리자 2018.10.24 591
404 인터베이스(InterBase)와 다른 데이터베이스들의 기능 비교 file 김원경 2020.02.27 590