iOS HEIC 성능

2020. 1. 13. 16:32Apple Product

본 글을 영어로 되어 있는 Blog 내용을 단순 번역한 것입니다. ( 원문은 아래 링크가 있으니 참고하세요 )

HEIF (High Efficiency Image File Format)는 MPEG (Moving Picture Experts Group)에서 개발 한 여러 유형의 이미지 데이터를 저장하기 위한 파일 형식입니다. iOS 11 (및 macOS 10.13)과 함께 도입 할 때 Apple은 HEIF 파일로 저장된 비트 맵이 디스크의 더 많은 공간을 차지하는 JPEG보다 품질이 높다고 주장합니다. PSPDFKit에서는 JPEG를 사용하여 렌더링 된 PDF 페이지를 디스크에 캐시합니다. 우리에게는 캐시 된 이미지가 가능한 한 정확해야하고 너무 많은 공간을 차지하지 않아야합니다. 또한 모바일 장치에서 빠르게 디코딩 및 인코딩되어야합니다. HEIF의 압축 및 품질 특성에 대해 확신하지만 JPEG를 사용할 때보 다 훨씬 느리다는 점에서 코딩 성능이 놀랍습니다.

이 게시물에서는 단일 이미지를 저장하는 데 사용될 때 HEIF의 성능을 살펴 보겠습니다. Apple에 따르면 단일 이미지 HEIF 파일의 파일 확장자는 HEIC입니다. 이 용어는 게시물 전체에서 상호 교환 적으로 사용됩니다.

HEIF를 사용하면 간단한 단일 이미지를 저장하는 것 외에도 원본의 "파생"을 저장할 수 있습니다. 소프트웨어에서 해당 파일에 편집 내용을 적용하는 방법을 지시하는 파일에 일련의 지침과 함께 저장된 이미지입니다. 알파 채널, 썸네일 또는 깊이 맵과 같은 보조 정보를 저장할 수도 있습니다. iOS 11에서는 Apple이 카메라로 캡처 한 사진을 저장하기 위해 기본적으로 HEIF를 사용하도록 전환했습니다. 그것이 제공하는 이점을 알고 난 후 이유를 알기가 어렵지 않습니다. MPEG는 HEIF 이미지가 동등한 JPEG보다 최대 50 % 작을 수 있다고 주장합니다. 이를 통해 이미지에 추가 메타 데이터를 첨부 할 수 있으며 (아마도 Apple은 현재 심도 맵에 사용) 아마도 메타 데이터가없는 JPEG보다 작지만 우수한 품질을 유지합니다.


캐싱

위에서 언급했듯이 페이지 렌더링 결과를 캐시해야합니다. 페이지가 요청 될 때마다 렌더링이 CPU에서 매우 거칠고 배터리 수명이 단축됩니다. 또한 사용자가 방금 스크롤 한 이미지를보기 위해 더 오래 기다려야합니다. Google의 프레임 워크는 이미지를 JPEG 파일로 인코딩하여 나중에 검색 할 수 있도록 디스크에 저장합니다. JPEG를 사용하는 데 아무런 문제가 없었지만 필요한 저장 공간이 줄어들면 사용자의 공간을 절약하거나 더 많은 페이지를 캐시 할 수 있습니다. 기본적으로 형식을 지정하는 압축으로 인해 JPEG를 사용하여 이미지를 캐시 할 때 품질이 약간 떨어집니다. HEIF는 품질 향상과 크기 감소를 약속하기 때문에 HEIF를 사용하여 이미지를 저장하도록 캐시를 전환하기 시작했습니다.


파일 크기

우리는 여러 출처에서들은 내용이 올바른지 스스로 테스트했습니다. HEIF는 공간을 덜 차지합니다. 디스크 캐시의 파일 형식으로 간단히 전환하면이를 확인할 수있었습니다. HEIF 이미지는 품질이 100 % 일 때 동일한 이미지가 JPEG와 동일한 공간의 약 90 % 만 필요합니다. 품질이 90 % 인 경우 JPEG 공간의 80 % 만 필요합니다. 이론적으로 디스크 사용량이 증가하지 않고도 캐시에 고품질 이미지를 저장할 수 있습니다.

그러나 100 %의 HEIF 이미지는 여전히 90 % 품질의 JPEG보다 큽니다. 따라서 디스크 공간을 크게 늘리지 않으면 이미지로 전환 할 수 없습니다.

디코딩 성능


다음으로 HEIF 이미지를 얼마나 빨리 압축 해제하여 표시 할 수 있는지 확인해야했습니다. 이미지를 최대한 빨리 표시해야하므로 시간을 너무 많이 잃을 수 없었습니다. 테스트하기 위해서는 UIImage가 실제로 요청 될 때까지 이미지 데이터를 디코딩 (압축 해제)하지 않기 때문에 적절한 이미지로 UIImage를 초기화하는 것만으로는 충분하지 않습니다. 그래서 우리는 디코딩이 발생했는지 확인하기 위해 임시 이미지 컨텍스트로 가져 왔습니다.

우리는 시간 프로파일 러 실행을 시작하고 두 성능을 비교했습니다. 품질이 1.0 일 때 testJPEGDecoding이 1.82 초 동안 실행되었고 testHEIFDecoding이 3.95 초 동안 실행되었습니다. 새로운 파일 형식을 디코딩하는 데는 2.1 배가 더 걸렸으므로 기본적으로이 형식으로 전환 할 수 없었습니다. 이 프로세스는 A9 칩 이상이 설치된 모든 장치에서 하드웨어 가속되어야한다는 점을 감안하면 놀라운 것 같습니다. 이 테스트는 A10X 칩이 장착 된 10.5 인치 iPad Pro에서 실행되었습니다. 품질을 0.9로 낮추었을 때 비슷한 결과가 나타났습니다. JPEG 실행은 1.7 초 만에 완료되었지만 HEIF는 3.69 초가 걸렸습니다. 또한 새로운 11 인치 iPad Pro 및 iPhone XS Max에서 벤치 마크를 실행했습니다. 결과는 예상치 못한 결과였습니다. HEIC 워크로드의 경우 A12 X Bionic 칩이 장착 된 최신 iPad Pro는 2017 년의 iPhone XS Max 및 iPad Pro보다 지속적으로 느 렸습니다.

 

인코딩 성능


철저하게하기 위해 인코딩 성능도 측정했습니다.

testJPEGEncoding 메소드는 1.0의 품질로 완료하는 데 9.4 초가 걸렸으며 testHEIFEncoding은 8.07 초가 걸렸습니다. HEIF 이미지를 1.0 품질로 인코딩하는 것은 1.0으로 설정된 품질로 JPEG를 인코딩하는 것보다 15 % 빠릅니다. 그러나 위에서 언급 한 것처럼 필요한 디스크 공간이 늘어나서 품질이 너무 높은 이미지를 저장하려고하지 않았습니다.

품질이 0.9로 설정되면 JPEG는 HEIF의 7.7 초와 비교하여 4.97 초 만에 실행을 다시 이끌었습니다. 다시 말해, 1.5 배 더 빨랐습니다.

 

결론


HEIF는 저장 매체로서 훨씬 더 효율적인 것으로 밝혀졌지만, 저장된 데이터를 비트 맵으로 변환하거나 그 반대로 변환하는 것은 JPEG를 사용하는 것보다 훨씬 느린 프로세스입니다. 따라서 당분간 캐시에서 HEIF로 전환하지 않기로 결정하고 향후 OS 및 하드웨어를 재평가하기로 결정했습니다. 카메라 캡처, 네트워크 전송 또는 크기가 가능한 한 작아야하는 다른 인스턴스와 같은 다른 사용 사례의 경우 HEIF는 실제로 훌륭한 옵션입니다. 앞으로 하드웨어가 개선되면 HEIF가 유스 케이스에 적합한 옵션이되기를 바랍니다.

또한 이러한 테스트를 실행하고 소요 된 시간을 기록하는 iOS 앱을위한 작은 GitHub 리포지토리를 설정했습니다. 관심이 있으시면 HEIC 벤치 마크를 살펴보십시오.

 

원문 : https://pspdfkit.com/blog/2018/ios-heic-performance/

 

iOS HEIC Performance | Inside PSPDFKit

We evaluate the encoding and decoding performance of HEIC.

pspdfkit.com