小扎和馬斯克的“格斗”,從八角籠中來到了社交平臺(tái)上。
當(dāng)?shù)貢r(shí)間 7 月 5 日,Meta 旗下的 Instagram 正式發(fā)布 Threads,與 Twitter 展開直接競(jìng)爭。據(jù)介紹,Threads 的定位是“用文本分享動(dòng)態(tài)和加入公共對(duì)話”。應(yīng)用上線后,Meta 公司首席執(zhí)行官馬克·扎克伯格“實(shí)時(shí)”公布 Threads 最新成績:4 小時(shí),注冊(cè)用戶 500 萬;7 小時(shí),注冊(cè)用戶 1000 萬;24 小時(shí),注冊(cè)用戶 3000 萬;48 小時(shí),注冊(cè)用戶 7000 萬。
北京時(shí)間 7 月 10 日 15 點(diǎn)左右,據(jù)數(shù)據(jù)追蹤網(wǎng)站 Quiver Quantitative 披露,Threads 的登錄用戶數(shù)已經(jīng)突破 1 億人。扎克伯格表示,這主要是自然需求,Threads 甚至還沒有開展很多推廣活動(dòng)。這遠(yuǎn)遠(yuǎn)超出了預(yù)期。
而此時(shí),距離 Threads 在美洲地區(qū)首發(fā)上線連 5 天整都沒到。Threads 的注冊(cè)用戶增速也打破了此前 ChatGPT 留下的記錄,后者用了 2 個(gè)月實(shí)現(xiàn)注冊(cè)用戶數(shù)破億。此外,Threads 用戶的活躍度也很高,據(jù)報(bào)道,過去幾天 Threads 上的帖子數(shù)量已經(jīng)達(dá)到 9500 多萬條,點(diǎn)贊數(shù) 1.9 億次。
投資銀行 Evercore ISI 表示,雖然現(xiàn)在還處于早期階段,但預(yù)計(jì) Threads 可以為 Meta 帶來可觀的現(xiàn)金。Threads 有望在未來兩年內(nèi)覆蓋近 2 億的日活躍用戶,并產(chǎn)生約 80 億美元的年收入。
那么,這樣一款現(xiàn)象級(jí)應(yīng)用程序是如何構(gòu)建的?
Threads 是如何構(gòu)建的?
近日,國外工具分析平臺(tái) Emerge Tools 率先對(duì) Threads App 進(jìn)行了拆解分析,分別揭曉了 Android 版 Threads 以及 iOS 版 Threads 是如何構(gòu)建的。
Emerge Tools 表示,Meta 投入大量資源對(duì)應(yīng)用做移動(dòng)性能優(yōu)化。通過測(cè)試和分析,可以看到 Meta 的移動(dòng)應(yīng)用優(yōu)化確實(shí)做得不錯(cuò)。Meta 采取的不少模式雖非典型的最佳實(shí)踐,但憑借著強(qiáng)大的基礎(chǔ)設(shè)施和工程能力,Meta 仍然在這場(chǎng)“以終為始”的性能大戰(zhàn)中占據(jù)了主動(dòng)。
拆解 Android、iOS 版 Threads
Android 版 Threads 方面,跟其他 Meta 應(yīng)用一樣,Threads 也提供通用 APK 文件。雖然業(yè)界認(rèn)為 AAB 才是最佳實(shí)踐,但 Meta 還是選擇了高度優(yōu)化過的通用 APK——把資源、自定義打包共享庫和 Redex 結(jié)合了起來。
Threads 還發(fā)布了調(diào)試代碼。Threads 提供 com.instagram.debug.devoptions.sandboxselector 和 com.instagram..debug.quickexperiment 等調(diào)試包。
此外,Threads 在應(yīng)用的某些部分使用了 React Native,- InstagramBundle.js.hbc.spk.xz 可能是 Hermes 字節(jié)碼(js.hbc)的壓縮版本。
其中有個(gè)很大的.spo 文件,看起來像是不同本機(jī)庫的編譯版本。其中附帶一個(gè)元數(shù)據(jù)文件:
arm64-v8a/librtc.so 11336240 bda527a307edd868700fccfab15481f403d3f39363289d5d6a717579f284bed7 arm64-v8a/libgojni.so 11330024 616915938eb1face6aa3392aedab8bddce280f2b84423377ac65896a6b3faad7 arm64-v8a/libarfxgraphicsmerged.so 9710600 afb00aa881a63b20371e447dbbad61fefcf4df2c23c922a9e44e2171d7a649ad ...
Emerge Tools 猜測(cè)這個(gè).spo 文件是所有本機(jī)庫的合并版本,第二個(gè)條目是 offset/size,第三個(gè)條目則是 checksum。
UI 方面,根據(jù) @richz(Threads 工程師)的帖子,Threads 主要用 Jetpack Compose 來構(gòu)建自己的 UI。跟整個(gè) dex 大小相比,dex 的組裝部分相對(duì)較?。s 130 KB),所以也許能更高效地使用 Compose 并 / 或共享 Instagram 代碼、控制實(shí)際代碼量。
Threads 的 iOS 版有兩點(diǎn)比較突出:
Thredas 有 0 個(gè)動(dòng)態(tài)庫,而 Facebook 應(yīng)用卻大量使用動(dòng)態(tài)框架。
Threads 的插件體量幾乎逼近人們的認(rèn)知極限。其中 BarcelonaShareExtension 達(dá)到 81 MB。相比之下,最大的 Instagram 插件 - InstagramNotificationExtension 也僅為 23.5 MB,InstagramShareExtension 則為 5.6 MB。
后端采用 Cinder,基于 Python 3.10 構(gòu)建
此外,據(jù) CPython 核心開發(fā)者 ?ukasz Langa 透露,Threads 的后端使用了 Cinder,這是基于 Python 3.10 構(gòu)建的高性能版本,其中包含 JIT、延遲加載模塊、預(yù)編譯靜態(tài)模塊,而且針對(duì) Python 3.10 做出了一系列有趣的調(diào)整。
據(jù)了解,Cinder 是 Meta 內(nèi)部打造的、強(qiáng)調(diào)高性能的 CPython 3.10 生產(chǎn)版本。其中包含多種性能優(yōu)化,例如字節(jié)碼內(nèi)聯(lián)緩存、協(xié)和即時(shí)評(píng)估、每次一個(gè)方法 JIT,以及使用類型注釋在 JIT 中實(shí)現(xiàn)類型專用字節(jié)碼、從而提高性能的實(shí)驗(yàn)性字節(jié)碼編譯器。
Cinder 目前已經(jīng)在支持 Instagram,而且正越來越多被用在 Meta 公司的各類 Python 應(yīng)用程序當(dāng)中。Meta 表示,公開發(fā)布 Cinder 是為了推動(dòng)將部分工作負(fù)載回流至 CPython 的討論,同時(shí)努力減少 CPython 開發(fā)者在性能優(yōu)化方面浪費(fèi)的時(shí)間。
但 Cinder 本身尚不完善,也不是 CPython 的替代品,Meta 發(fā)布項(xiàng)目代碼的唯一理由,就是想幫助 CPython 在速度方面更上一層樓。雖然 Meta 自己確實(shí)在生產(chǎn)環(huán)境中運(yùn)行 Cinder,但無法為其他開發(fā)者提供生產(chǎn)層級(jí)的技術(shù)支持。只能保證 Cinder 在 Meta 自己的生產(chǎn)工作負(fù)載中穩(wěn)定且快速,但不保證其在其他外部工作負(fù)載或用例中具有良好的穩(wěn)定性、正確性或性能。
據(jù)介紹,Instagram 擁有非常龐大的 Python 代碼庫,所以由引用計(jì)數(shù)復(fù)制所帶來的開銷也極為沉重。為此,Cinder 開發(fā)出名為“不朽實(shí)例”(Immortal Instance)的解決方案,能夠從引用計(jì)數(shù)中清退對(duì)象。此功能通過定義 Py_IMMORTAL_INSTANCES 進(jìn)行控制,并在 Cinder 中默認(rèn)啟用。這對(duì)生產(chǎn)流程是一個(gè)巨大的勝利(節(jié)約開銷約 5%),但也會(huì)令直接代碼的運(yùn)行速度變慢。由于引用計(jì)數(shù)操作會(huì)頻繁發(fā)生,所以啟用此功能前必須檢查對(duì)象是否確實(shí)參與了引用計(jì)數(shù)。
Threads 的啟動(dòng)時(shí)間如何?
Emerge Tools 用 ETTrace 來查看 Threads 的實(shí)際啟動(dòng)時(shí)間。
使用 ETTrace 為 Threads 的啟動(dòng)過程生成火焰圖。
Emerge Tools 表示,由于 Meta 公開的 build 混淆,能從棧中追蹤到的信息不多。但仍然可以看到,其中存在大量 pre-main 時(shí)間(在追蹤期間約為 50 毫秒)。
還有一個(gè)會(huì)在應(yīng)用啟動(dòng)時(shí)初始化的 WKWebView,它的速度也相當(dāng)慢。這意味著整個(gè)登錄體驗(yàn)并非本機(jī)、而是在顯示 webview,或者是出于追蹤的目的而將登錄放在了后臺(tái)。
Threads 未來會(huì) “去 Instagram 化”嗎?
分析發(fā)現(xiàn),Threads 在 Android 和 iOS 兩大平臺(tái)上都照搬了不少 Instagram 代碼,比如 InstagramBundle.js.hbc.spk.xz 等等。
其中,Android 版 Threads 與 Instagram 間的 /assets/dsp 也是相同的。考慮到 Threads 與 Instagram 高度集成,二者共享代碼也完全在情理之中。
此外,iOS 版 Threads 的 BarcelonaShareExtension 與 Instagram 的 FBSharedFramework 之間擁有很多相同元素。一些值得注意的相同元素:
FilterAsset.bundle;
ig_signals_cupid_better_recall_v1.mlmodelc 與ig_signals_cupid_v2.mlmodelc;
資產(chǎn)目錄幾乎完全相同。
作為一款新產(chǎn)品,Threads 的發(fā)布顯然有些倉促。Threads 在 Android 和 iOS 兩大平臺(tái)上和 Instagram 共享大量代碼,明顯是為了加快開發(fā)速度。Threads 團(tuán)隊(duì)希望快速行動(dòng),在一切可能的位置直接使用 Instagram 那邊的現(xiàn)成代碼。在未來的發(fā)展中,Threads 會(huì)不會(huì)逐步“去 Instagram 化”值得關(guān)注。
目前,Threads 還缺少了一些關(guān)鍵功能,比如沒有翻譯按鈕、不能搜索內(nèi)容(只能搜索用戶)、沒有話題標(biāo)簽功能、沒有編輯按鈕(發(fā)布帖子后無法進(jìn)行編輯)、不能私信等。Meta 產(chǎn)品副總裁 Connor Hayes 也承認(rèn),有一些功能沒能趕上這次發(fā)布,它們會(huì)在日后更新時(shí)推出。
-
Twitter
+關(guān)注
關(guān)注
0文章
176瀏覽量
15885 -
python
+關(guān)注
關(guān)注
56文章
4797瀏覽量
84727 -
ChatGPT
+關(guān)注
關(guān)注
29文章
1562瀏覽量
7722
原文標(biāo)題:5 天內(nèi)用戶數(shù)破億、增速碾壓 ChatGPT,Twitter 勁敵 Threads 是如何構(gòu)建的?
文章出處:【微信號(hào):AI前線,微信公眾號(hào):AI前線】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論