Base62x與Base64的編碼速度測評

現(xiàn)在幾乎所有企事業(yè)單位、政府機構(gòu)、軍工系統(tǒng)等的IT生產(chǎn)系統(tǒng)都會用到Base64編碼,從RSA安全密鑰到管理信息系統(tǒng)登錄入口回跳,目前越來越多的IT系統(tǒng)研發(fā)者開始使用 Base62x 替換 Base64.
Base62x 提供了一種無符號輸出的Base64的編碼方案,在許多應(yīng)用場合其純字母和數(shù)字的輸出形式,可以有效的規(guī)避因為符號帶來的各種負(fù)面影響,并能夠有效削減或兼容各種Base64的變種形式。
借著 Base62x 在 -GitHub 上獲得幾個贊之后,我們探討另外一個問題,Base62x 的編碼在輸出文本形式上略勝一籌,是值得推薦的替代方案,但其編碼速度和效率如何?
為此我們設(shè)計一個評測任務(wù),分別使用Base62x 和 Base64進行20萬次編碼操作,其中Base62x 使用 PHP的ext module方式實現(xiàn)的 base62x_encode , Base64 也是 PHP內(nèi)置的 base64_encode , 兩種均是使用C語言實現(xiàn),并通過擴展方式集成在 PHP中,相對而言,可比性較好. 運行主機是在 Windows下虛擬主機運行 OpenSuSE 42,Nginx 1.12, PHP 7.0.
通過腳本Command Line調(diào)用方式進行20萬次編碼任務(wù),對比測試數(shù)據(jù):
base62x 200000 timestart:1513077337.6748 timecost:0.30399990081787
base64 200000 timestart:1513077337.9788 timecost:0.16817998886108
base62x 200000 timestart:1513077401.2177 timecost:0.29567098617554
base64 200000 timestart:1513077401.5134 timecost:0.17081189155579
base62x 200000 timestart:1513077424.234 timecost:0.30112099647522
base64 200000 timestart:1513077424.5351 timecost:0.1718909740448
base62x 200000 timestart:1513077447.9861 timecost:0.29450607299805
base64 200000 timestart:1513077448.2806 timecost:0.16546702384949
base62x 200000 timestart:1513077470.7367 timecost:0.45493698120117
base64 200000 timestart:1513077471.1917 timecost:0.24029588699341
運行5次之后,Base62x 和 Base64 其均值分別為,0.330047 和 0.183329 . 由此可見,Base62x 比 Base64 在編碼速度上稍慢,20萬次操作耗時比值為 1:0.555 , 盡管每次操作其耗時差(7.33589E-07)可以忽略不計,但考察比值,Base62x 慢了大約 44.5%,大致是 Base64 完成兩個編碼操作, 目前版本的 Base62x 完成一個多一點的編碼操作。
如果加上在應(yīng)用層的各種判斷,使用 Base62x 替代 Base64 可能是有優(yōu)勢的,比如判斷是否包括+,進而轉(zhuǎn)化為空格,是否包括等號等,因為任何一步額外的判斷或替換操作,其耗時將可能遠(yuǎn)超過 Base62x 與 Base64 操作耗時的差值。
比如其中一個 URLEncode 的應(yīng)用場景,在 -github/wadelau/gMIS/comm/ido.js 中(-R/J2SI):
varactx=unescape(tObj.action); actx=actx.replace(‘+‘,‘‘);取代的改進使用Base62x的方案是:
varactx=Base62x.decode(tObj.action); /* no more action needed */從代碼層分析耗時差值原因,盡管兩者都使用了位操作進行計算,但 Base62x 在單位編碼長度上多了數(shù)值判斷,由此導(dǎo)致其速度下降。Base62x 還是新事物,其代碼應(yīng)該還有可以再改進優(yōu)化的空間。
如果進一步改進優(yōu)化,Base62x 有可能與 Base64 相同的編碼速度嗎?
有沒有可能存在另外一種不需要數(shù)值判斷,也能夠滿足與 Base62x 一樣無符號輸出的64進制編碼方案?
小結(jié),單就編碼速度而言, Base64 方案快,如果加上其他判斷與替換操作, Base62x 方案勝出,未來可能會有魚(無符號輸出)和熊掌(速度)兼得的新編碼方案出現(xiàn)。
-R/52SL
當(dāng)前題目:Base62x比Base64的編碼速度更快嗎?
網(wǎng)頁URL:http://chinadenli.net/article12/cjiedc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、動態(tài)網(wǎng)站、建站公司、網(wǎng)站策劃、用戶體驗、網(wǎng)站內(nèi)鏈
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)