成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

超快的PNG圖像解碼器!速度提升2.75倍,比老大哥libpng還安全

新聞 前端
一款號稱“世界上最快的PNG圖像解碼器”誕生了,速度是“老大哥”的1.22-2.75倍!

 [[392888]]

本文經(jīng)AI新媒體量子位(公眾號ID:QbitAI)授權(quán)轉(zhuǎn)載,轉(zhuǎn)載請聯(lián)系出處。

提到PNG,大多數(shù)人都不會感到陌生。

這種位圖格式在圖像領(lǐng)域使用頻率僅次于JPEG。

然而在“解碼PNG”這件事上,23年來主流的工具是一個(gè)叫做libpng的標(biāo)準(zhǔn)庫。

但最近,一款號稱“世界上最快的PNG圖像解碼器”誕生了,速度是“老大哥”的1.22-2.75倍!

最快的PNG圖像解碼器!速度提升2.75倍,比老大哥libpng還安全

除了速度方面的優(yōu)勢之外,更重要的一點(diǎn),極其安全

超快的PNG圖像解碼器

與用C語言為底層的libpng不同,這款PNG圖像解碼器采用的是Wuffs

Wuffs是一種內(nèi)存安全的編程語言(也是用這種語言編寫的標(biāo)準(zhǔn)庫),用于安全處理不受信任的文件格式

包括解析、解碼和編碼圖像,音頻,視頻,字體等。

Wuffs不是一種通用編程語言。它是用來編寫庫的,完整的程序需要將Wuffs與另一種編程語言結(jié)合使用。

尤其是需要同時(shí)考慮性能和安全性的時(shí)候。

ps. 機(jī)智的你發(fā)現(xiàn)了嗎,Wuffs其實(shí)就是Wrangling Untrusted File Formats Safely的縮寫。

不過它以前叫Puffs,至于為什么將Puffs(parsing)改為Wuffs(wrangling),留給你們自己去想象~

那么,解碼速度快至2.75倍,怎么做到的?

Wuffs通過SIMD加速方案,8字節(jié)寬的輸入和復(fù)制,一次將整個(gè)圖像進(jìn)行位扭曲和zlib解壓縮到一個(gè)大的中間緩沖區(qū)來實(shí)現(xiàn)高性能。此法替代了此前的一次一行(小塊重復(fù)壓縮)的方式。

這“一包帶走”的操作需要更多的中間存儲,但能解碼的圖像數(shù)量也更多了。

具體咋回事兒呢?

我們知道,PNG圖像格式編/解碼基于以下三方面:

  • CRC-32和Adler-32兩種校驗(yàn)和算法
  • DEFLATE壓縮
  • 二維過濾

Wuffs對這其中的每一步都進(jìn)行了優(yōu)化。

首先,對兩種校驗(yàn)和算法施以SIMD加速技術(shù)。

SIMD是一種采用一個(gè)控制器來控制多個(gè)處理器,同時(shí)對一組數(shù)據(jù)中的每一個(gè)分別執(zhí)行相同的操作從而實(shí)現(xiàn)空間上的并行性的技術(shù)。

其次,0.2版本W(wǎng)uffs具有與zlib庫一樣的DEFLATE實(shí)現(xiàn),而0.3版Wuffs為現(xiàn)代CPU(具有64位未對齊加載和存儲)添加了兩個(gè)重要的優(yōu)化:8字節(jié)區(qū)塊輸入和8字節(jié)區(qū)塊輸出

DEFLATE是同時(shí)使用了LZ77算法與哈夫曼編碼的一個(gè)無損數(shù)據(jù)壓縮算法。

對于Wuffs,8字節(jié)區(qū)塊輸入設(shè)計(jì)的每個(gè)內(nèi)部循環(huán)一次讀取64位可使DEFLATE微基準(zhǔn)加速多達(dá)1.3倍

而8字節(jié)區(qū)塊輸出設(shè)計(jì)將副本長度舍入為8的倍數(shù)可以使DEFLATE微基準(zhǔn)提高多達(dá)1.48倍

此外,DEFLATE涉及寫入目標(biāo)緩沖區(qū)和寫入緩沖區(qū)邊界的問題。

(經(jīng)典的“緩沖區(qū)溢出”安全漏洞,類似于從懸崖上奔跑,如何不落入鯊魚口中)。

此方面,Wuffs使用和libpng相似的藍(lán)/紅雙重實(shí)現(xiàn)技術(shù)

藍(lán)/紅雙重實(shí)現(xiàn)技術(shù):一種快速的“藍(lán)色”解壓縮(在距緩沖區(qū)末端至少258個(gè)字節(jié)或更多字節(jié) 時(shí))以及一種緩慢的“紅色”解壓縮(反之)技術(shù)。

以前面的從懸崖上奔跑做比喻,就是在離崖邊還遠(yuǎn)時(shí)盡可能得快跑,離崖邊很近時(shí)減速剎車。

最快的PNG圖像解碼器!速度提升2.75倍,比老大哥libpng還安全

但同樣的技術(shù),為什么Wuffs更快?

因?yàn)樗芤淮螌缀跛袃?nèi)容(eg. 300×200 RGB圖像的像素的99%以上)解壓縮到一個(gè)大的中間緩沖區(qū)中,而不是一次只壓縮一行到一個(gè)小的、可重復(fù)使用的中間緩沖區(qū)中。

如圖所示,幾乎所有內(nèi)容現(xiàn)在都在“藍(lán)色”區(qū)域中解碼。

這本身就比“紅色”區(qū)域快。

而且在藍(lán)色代碼和紅色代碼之間交替時(shí),Wuffs也避免了任何指令高速緩存或分支預(yù)測變慢的情況。

最快的PNG圖像解碼器!速度提升2.75倍,比老大哥libpng還安全

最后,雖然Wuffs和libpng都具有PNG二維過濾的SIMD實(shí)現(xiàn)。

但是因?yàn)閘ibpng將任何自分配的像素行緩沖區(qū)對齊到最適合SIMD的邊界時(shí),對齊這步操作會影響SIMD指令的選擇和性能。

而Wuffs對緩沖區(qū)對齊的承諾較少,部分原因是Wuffs不具有分配內(nèi)存的能力,但主要還是因?yàn)橐淮稳拷鈮嚎s時(shí),zlib壓縮要求放棄例如每行開頭4字節(jié)的對齊。

為什么說最安全?

與Go或Rust不同,Wuffs的內(nèi)存安全是在編譯時(shí)強(qiáng)制執(zhí)行的,而不是通過插入運(yùn)行時(shí)再檢查。

( ps.運(yùn)行時(shí)安全檢查也可能會影響性能。)

此外,在處理不受信任的(第三方)PNG圖像時(shí),沙盒和多進(jìn)程體系結(jié)構(gòu)可以提供額外的深度防御。

在上一節(jié)描述的三步優(yōu)化技術(shù)也可用來給現(xiàn)有的libpng、Go/Rust PNG庫等打補(bǔ)丁。

然后就有網(wǎng)友說這樣一來Wuffs還是不是最快的就難說了……但開發(fā)者表示至少在安全性方面,Wuffs No.1沒得說。

最快的PNG圖像解碼器!速度提升2.75倍,比老大哥libpng還安全

最后,Wuffs版本0.3.0-beta.1剛剛發(fā)布,但從目前的功能來看,它還不支持顏色空間或伽馬校正。

責(zé)任編輯:張燕妮 來源: 量子位
相關(guān)推薦

2010-04-06 14:32:12

2013-02-26 10:53:16

大數(shù)據(jù)云計(jì)算

2013-10-29 16:04:50

UbuntuUbuntu創(chuàng)始人Mark Shuttl

2014-08-07 09:18:34

在線追蹤

2013-07-23 10:02:19

隱私保護(hù)

2015-06-09 15:23:50

2023-01-08 13:22:03

模型

2014-02-27 13:10:57

Visual Stud調(diào)試

2018-01-29 05:38:20

5G4G運(yùn)營商

2023-09-27 17:46:15

數(shù)據(jù)VectorELK

2009-05-15 09:02:03

Windows 7微軟操作系統(tǒng)

2023-02-17 14:52:59

谷歌AI

2022-03-19 10:26:48

Linuxapt 命令

2023-10-25 18:53:45

芯片AI芯片

2022-10-27 08:31:31

架構(gòu)

2024-03-26 10:13:54

日志引擎SigLens

2009-07-01 09:47:10

FireFox 3.5瀏覽

2010-09-30 10:13:55

超算HPC

2017-03-21 07:54:43

解碼器軟件程序

2009-03-02 15:37:12

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 久久亚洲精品国产精品紫薇 | 国产一级成人 | 激情 婷婷 | 日韩精品一区二区三区在线播放 | 欧美一区二区在线视频 | 中文字幕一区在线 | 国产精品视频中文字幕 | 日韩播放 | 在线中文字幕第一页 | av一级| 国产激情在线 | 欧美日韩在线一区二区三区 | 精品久久久久久久久久 | 狠狠操狠狠搞 | 在线激情视频 | 国产av毛片 | 精品国产一区二区三区久久 | 成年人在线视频 | 99在线免费视频 | 成年网站在线观看 | 国产在线一区二 | 国产高清免费视频 | 欧美成人在线影院 | 国产精品国产精品国产专区不蜜 | 久久免费视频在线 | 99国产精品久久久久久久 | 欧美xxxx日本 | 久久综合伊人一区二区三 | 亚洲精品在线国产 | 国产午夜精品一区二区三区在线观看 | 中文字幕在线观看一区二区 | 国产在线观看网站 | 精品久久久久久亚洲精品 | 亚洲精品一区国产精品 | 久久99久久98精品免观看软件 | 久久久www成人免费精品 | 一区二区三区四区电影 | 日韩二三区 | 成人免费视频 | 国产亚洲一区二区三区在线观看 | 日韩欧美在线一区 |