2011-06-13 2 views
3

플래시 SWF 내에서 사용하기 위해 PNG 인코더를 최적화하고 있습니다 (단, 저는 Haxe에 쓰고 있습니다).PNG 인코딩 속도를 높이기위한 맞춤 DEFLATE 구현

나는 지금까지 speedy memory read/writes을 사용하여 일들을 공정하게 처리 할 수있었습니다.

내 코드를 프로파일 링하는 동안, 플래시의 내장 된 compress() 메소드를 한 번 호출하는 데 소요 된 시간의 약 75 %가 zlib 알고리즘 (DEFLATE를 사용)을 사용하는 것으로 나타났습니다.

나는 압축 비율에 대해 너무 까다 롭지 않지만, 압축은 더 빠를 것입니다. 압축은 굉장합니다. 그래서 zlib/DEFLATE를 직접 구현하는 것이 가치가 있는지 궁금합니다. 약간의 검색을 통해 zlib C 구현 소스가 나타 났지만 정확하게 읽기가 쉽지는 않습니다.

시작 지점으로 사용할 수있는 zlib/DEFLATE의 간단한 구현이 있습니까? 차라리 AVM2에서 실행되는 구현이 최초의 네이티브 플래시만큼 빠른 성능을 발휘할 수 있는지 여부를 알지 못하기 때문에 twospecs까지 걸어 갈 필요가 없습니다.

답변

3

deflate/zlib을 처음부터 구현 한 결과, GitHub (README)에서 그 위에 구축 된 PNG 인코더와 방금 릴리스했습니다. 또한 benchmark을 다른 인코더와 비교하여 PNG 인코더에 대한 블로그 게시물을 작성했습니다.

압축 구현은 DeflateStream.hx에 포함되어 있으며 인코딩 프로세스의 속도를 크게 향상시킵니다 (완전히 비동기로 만들 수 있음).

1

fzip 또는 ascompress

+0

고마워요,하지만 모두 실제 압축을 위해 Flash의 내장 deflate()/compress() 메소드를 사용합니다. – Cameron

3

난 당신이 네이티브가 아닌 폐의 알고리즘 더 나은 성능을 달성 할 수있을 것이라고 생각하지 않는다 사용하려고합니다. 하지만 비동기 적으로 실행하면 차이를 만들 수 있습니다. 이식하려는 경우 https://github.com/dankogai/js-deflate과 같은 AS3 또는 자바 스크립트 구현을 찾는 것이 가장 좋습니다. 행운을 빕니다!

+1

http://code.google.com/p/hxformat/ 여기 Influate 작성 알고리즘이있는 것 같습니다. source/browse/trunk/format/tools/InflateImpl.hx – Waneck

+0

Waneck에게 감사드립니다. HaXe는 재미있다. 그러나 나는 단지 공기를 빼야한다 ;-) – Cameron

+0

@Waneck (시원한)! 너 +1! – Eugeny89

관련 문제