自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Rust編寫廣告攔截器的新引擎,為什么性能提高了69倍?

開發(fā) 前端
最近,看到Brave瀏覽器也已經(jīng)趕上了用Rust編程語言編寫或重寫其組件的潮流。其團(tuán)隊(duì)宣布他們已在Rust中重新實(shí)現(xiàn)了其廣告攔截器,該廣告攔截器以前是用C ++編寫的。結(jié)果,廣告攔截器現(xiàn)在的速度是當(dāng)前引擎的69倍。

最近,看到Brave瀏覽器也已經(jīng)趕上了用Rust編程語言編寫或重寫其組件的潮流。其團(tuán)隊(duì)宣布他們已在Rust中重新實(shí)現(xiàn)了其廣告攔截器,該廣告攔截器以前是用C ++編寫的。結(jié)果,廣告攔截器現(xiàn)在的速度是當(dāng)前引擎的69倍。

為什么呢?

新的廣告攔截器實(shí)現(xiàn)可以編譯為本機(jī)代碼,并在本機(jī)瀏覽器內(nèi)核中運(yùn)行。也可以將其打包在獨(dú)立的Node.js模塊中。此重新實(shí)現(xiàn)的版本經(jīng)過本人確認(rèn),可在Brave的 Dev頻道和Nightly頻道上找到。

 

[[316085]]

這種新的廣告攔截算法如何工作?

先前的廣告屏蔽算法是基于以下觀察結(jié)果:大多數(shù)請求都經(jīng)過了傳遞而沒有阻塞。它使用Bloom過濾器數(shù)據(jù)結(jié)構(gòu)來跟蹤可能匹配的請求片段,并排除不匹配的請求。

新的實(shí)現(xiàn)基于uBlock Origin和Ghostery的ad-blocking方法,該方法是令牌化特定于針對URL的添加塊規(guī)則匹配和針對各種規(guī)則進(jìn)行了優(yōu)化的規(guī)則評估。

使該新算法更快的原因在于,它可以快速消除所有可能不匹配搜索請求的規(guī)則。該團(tuán)隊(duì)解釋說:“ 為了以加快過濾器匹配速度的方式組織過濾器,我們觀察到過濾器中包含的任何字母數(shù)字(字母和數(shù)字)子字符串也必須包含在任何匹配的URL中。”

所有這些子字符串都散列為一個數(shù)字,從而產(chǎn)生許多令牌。當(dāng)以相同的方式標(biāo)記URL時,標(biāo)記使匹配變得更加容易和快捷。該團(tuán)隊(duì)進(jìn)一步寫道:“ 即使是散列算法的本質(zhì),多個不同的字符串也可以散列為相同的數(shù)字(散列沖突),但我們?nèi)允褂盟鼈儗⒁?guī)則評估限制為盡可能匹配的規(guī)則。”如果規(guī)則具有特定的主機(jī)名,它也會被標(biāo)記化。如果規(guī)則包含單個域選項(xiàng),則整個域?qū)⒆鳛榱硪粋€令牌散列。

 

[[316086]]

重新實(shí)施可提高性能

為了進(jìn)行性能評估,團(tuán)隊(duì)使用了Ghostery廣告攔截器性能研究發(fā)布的數(shù)據(jù)集,其中包括500個熱門網(wǎng)站上的242,945個請求。針對此數(shù)據(jù)集,使用不同的廣告阻止規(guī)則列表對新廣告阻止程序進(jìn)行了測試,其中包括最大的列表:EasyList和EasyPrivacy組合。

該團(tuán)隊(duì)在adblock-rust 0.1.21庫中執(zhí)行了所有基準(zhǔn)測試。他們使用了具有2.6 GHz Intel Core i7 CPU和32GB RAM的2018年MacBook Pro筆記本電腦。

 

[[316087]]

以下是此新廣告攔截器顯示的性能提升:

  • 與現(xiàn)有引擎相比,具有優(yōu)化規(guī)則集的新算法平均快69倍。
  • 當(dāng)使用EasyList和EasyPrivacy的流行過濾器列表組合進(jìn)行測試時,它給出了“一流的性能,每個請求平均僅花費(fèi)5.7μs”。
  • 它已經(jīng)支持大多數(shù)過濾規(guī)則語法,這些語法已超出原始規(guī)范。這將使團(tuán)隊(duì)能夠更好,更快地處理Web兼容性問題。
  • 瀏覽器完成了一些對廣告攔截者有用的工作。這樣可以進(jìn)一步減少開銷,從而使廣告攔截器具有最佳的性能。
  • 選擇一門合適的語言節(jié)約又環(huán)保,而重要的是在開始項(xiàng)目之前就要把途中重要部分先做規(guī)劃,才能更高效的完成任務(wù)。

 

責(zé)任編輯:未麗燕 來源: 今日頭條
相關(guān)推薦

2020-06-11 08:05:47

nginx線程池數(shù)據(jù)

2020-06-12 14:44:06

線程池模式nginx

2024-05-11 09:24:15

性能Go團(tuán)隊(duì)

2021-12-08 12:50:39

代碼MyBatisJava

2024-02-07 13:37:39

AWS系統(tǒng)應(yīng)用程序

2021-07-28 14:35:09

代碼進(jìn)度條前端

2019-06-21 08:39:23

SQLmysql索引

2019-12-10 09:47:51

IaaS云計算物聯(lián)網(wǎng)

2024-07-12 11:44:39

2024-08-07 08:51:20

Go優(yōu)化開發(fā)

2020-12-24 19:29:08

PCIntel芯片

2023-12-26 17:18:13

darktable

2020-08-21 10:59:10

微軟服務(wù)器運(yùn)維

2012-05-02 12:39:31

無線網(wǎng)絡(luò)多跳無線網(wǎng)絡(luò)數(shù)據(jù)傳輸

2012-05-02 11:09:38

無線網(wǎng)絡(luò)數(shù)據(jù)傳輸

2017-05-31 15:36:59

5G頻譜傳感器

2023-05-22 07:27:08

AI

2009-06-24 16:00:00

2021-09-01 17:53:29

iOS14數(shù)據(jù)
點(diǎn)贊
收藏

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