5 天内用户数破亿、增速碾压 ChatGPT

来源 | InfoQ,整理 | 凌敏、核子可乐

小扎和马斯克的“格斗”,从八角笼中来到了社交平台上。

当地时间 7 月 5 日,Meta 旗下的 Instagram 正式发布 Threads,与 Twitter 展开直接竞争。据介绍,Threads 的定位是“用文本分享动态和加入公共对话”。应用上线后,Meta 公司首席执行官马克·扎克伯格“实时”公布 Threads 最新成绩:4 小时,注册用户 500 万;7 小时,注册用户 1000 万;24 小时,注册用户 3000 万;48 小时,注册用户 7000 万。

北京时间 7 月 10 日 15 点左右,据数据追踪网站 Quiver Quantitative 披露,Threads 的登录用户数已经突破 1 亿人。扎克伯格表示,这主要是自然需求,Threads 甚至还没有开展很多推广活动。这远远超出了预期。

而此时,距离 Threads 在美洲地区首发上线连 5 天整都没到。Threads 的注册用户增速也打破了此前 ChatGPT 留下的记录,后者用了 2 个月实现注册用户数破亿。此外,Threads 用户的活跃度也很高,据报道,过去几天 Threads 上的帖子数量已经达到 9500 多万条,点赞数 1.9 亿次。

投资银行 Evercore ISI 表示,虽然现在还处于早期阶段,但预计 Threads 可以为 Meta 带来可观的现金。Threads 有望在未来两年内覆盖近 2 亿的日活跃用户,并产生约 80 亿美元的年收入。

那么,这样一款现象级应用程序是如何构建的?

1Threads 是如何构建的?  

近日,国外工具分析平台 Emerge Tools 率先对 Threads App 进行了拆解分析,分别揭晓了 Android 版 Threads 以及 iOS 版 Threads 是如何构建的。

Emerge Tools 表示,Meta 投入大量资源对应用做移动性能优化。通过测试和分析,可以看到 Meta 的移动应用优化确实做得不错。Meta 采取的不少模式虽非典型的最佳实践,但凭借着强大的基础设施和工程能力,Meta 仍然在这场“以终为始”的性能大战中占据了主动。

拆解 Android、iOS 版 Threads  

Android 版 Threads 方面,跟其他 Meta 应用一样,Threads 也提供通用 APK 文件。虽然业界认为 AAB 才是最佳实践,但 Meta 还是选择了高度优化过的通用 APK——把资源、自定义打包共享库和 Redex 结合了起来。

Threads 还发布了调试代码。Threads 提供 com.instagram.debug.devoptions.sandboxselector 和 com.instagram..debug.quickexperiment 等调试包。

此外,Threads 在应用的某些部分使用了 React Native,- InstagramBundle.js.hbc.spk.xz 可能是 Hermes 字节码(js.hbc)的压缩版本。

其中有个很大的.spo 文件,看起来像是不同本机库的编译版本。其中附带一个元数据文件:

arm64-v8a/librtc.so 11336240 bda527a307edd868700fccfab15481f403d3f39363289d5d6a717579f284bed7
arm64-v8a/libgojni.so 11330024 616915938eb1face6aa3392aedab8bddce280f2b84423377ac65896a6b3faad7
arm64-v8a/libarfxgraphicsmerged.so 9710600 afb00aa881a63b20371e447dbbad61fefcf4df2c23c922a9e44e2171d7a649ad
...

Emerge Tools 猜测这个.spo 文件是所有本机库的合并版本,第二个条目是 offset/size,第三个条目则是 checksum。

UI 方面,根据 @richz(Threads 工程师)的帖子,Threads 主要用 Jetpack Compose 来构建自己的 UI。跟整个 dex 大小相比,dex 的组装部分相对较小(约 130 KB),所以也许能更高效地使用 Compose 并 / 或共享 Instagram 代码、控制实际代码量。

ebc600f288d5d719afd5ef503ab016a0.png

Threads 的 iOS 版有两点比较突出:

  1. Thredas 有 0 个动态库,而 Facebook 应用却大量使用动态框架。

  2. Threads 的插件体量几乎逼近人们的认知极限。其中 BarcelonaShareExtension 达到 81 MB。相比之下,最大的 Instagram 插件 - InstagramNotificationExtension 也仅为 23.5 MB,InstagramShareExtension 则为 5.6 MB。

后端采用 Cinder,基于 Python 3.10 构建  

此外,据 CPython 核心开发者 Łukasz Langa 透露,Threads 的后端使用了 Cinder,这是基于 Python 3.10 构建的高性能版本,其中包含 JIT、延迟加载模块、预编译静态模块,而且针对 Python 3.10 做出了一系列有趣的调整。

418f437d55b77e56501a6dd77c1fc499.png

据了解,Cinder 是 Meta 内部打造的、强调高性能的 CPython 3.10 生产版本。其中包含多种性能优化,例如字节码内联缓存、协和即时评估、每次一个方法 JIT,以及使用类型注释在 JIT 中实现类型专用字节码、从而提高性能的实验性字节码编译器。

Cinder 目前已经在支持 Instagram,而且正越来越多被用在 Meta 公司的各类 Python 应用程序当中。Meta 表示,公开发布 Cinder 是为了推动将部分工作负载回流至 CPython 的讨论,同时努力减少 CPython 开发者在性能优化方面浪费的时间。

但 Cinder 本身尚不完善,也不是 CPython 的替代品,Meta 发布项目代码的唯一理由,就是想帮助 CPython 在速度方面更上一层楼。虽然 Meta 自己确实在生产环境中运行 Cinder,但无法为其他开发者提供生产层级的技术支持。只能保证 Cinder 在 Meta 自己的生产工作负载中稳定且快速,但不保证其在其他外部工作负载或用例中具有良好的稳定性、正确性或性能。

据介绍,Instagram 拥有非常庞大的 Python 代码库,所以由引用计数复制所带来的开销也极为沉重。为此,Cinder 开发出名为“不朽实例”(Immortal Instance)的解决方案,能够从引用计数中清退对象。此功能通过定义 Py_IMMORTAL_INSTANCES 进行控制,并在 Cinder 中默认启用。这对生产流程是一个巨大的胜利(节约开销约 5%),但也会令直接代码的运行速度变慢。由于引用计数操作会频繁发生,所以启用此功能前必须检查对象是否确实参与了引用计数。

Threads 的启动时间如何?  

Emerge Tools 用 ETTrace 来查看 Threads 的实际启动时间。

620e8b6e7abd0baa2a7243df54e53e5b.png

使用 ETTrace 为 Threads 的启动过程生成火焰图。

Emerge Tools 表示,由于 Meta 公开的 build 混淆,能从栈中追踪到的信息不多。但仍然可以看到,其中存在大量 pre-main 时间(在追踪期间约为 50 毫秒)。

还有一个会在应用启动时初始化的 WKWebView,它的速度也相当慢。这意味着整个登录体验并非本机、而是在显示 webview,或者是出于追踪的目的而将登录放在了后台。

2
Threads 未来会“去 Instagram 化”吗?  

分析发现,Threads 在 Android 和 iOS 两大平台上都照搬了不少 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;

  • 资产目录几乎完全相同。

作为一款新产品,Threads 的发布显然有些仓促。Threads 在 Android 和 iOS 两大平台上和 Instagram 共享大量代码,明显是为了加快开发速度。Threads 团队希望快速行动,在一切可能的位置直接使用 Instagram 那边的现成代码。在未来的发展中,Threads 会不会逐步“去 Instagram 化”值得关注。

目前,Threads 还缺少了一些关键功能,比如没有翻译按钮、不能搜索内容(只能搜索用户)、没有话题标签功能、没有编辑按钮(发布帖子后无法进行编辑)、不能私信等。Meta 产品副总裁  Connor Hayes 也承认,有一些功能没能赶上这次发布,它们会在日后更新时推出。

参考链接

https://twitter.com/llanga/status/1676846870520291329

https://news.ycombinator.com/item?id=36612835

https://www.emergetools.com/deep-dives/threads

------

我们创建了一个高质量的技术交流群,与优秀的人在一起,自己也会优秀起来,赶紧点击加群,享受一起成长的快乐。另外,如果你最近想跳槽的话,年前我花了2周时间收集了一波大厂面经,节后准备跳槽的可以点击这里领取!

推荐阅读

  • Evernote 裁掉了最后98名员工,建议备份迁移其他工具

  • 不用宝塔?那就选这个开源免费的面板吧!

  • 那些在一个公司死磕了 5 - 10 年的人,最后都怎么样了?

··································

你好,我是程序猿DD,10年开发老司机、阿里云MVP、腾讯云TVP、出过书创过业、国企4年互联网6年。从普通开发到架构师、再到合伙人。一路过来,给我最深的感受就是一定要不断学习并关注前沿。只要你能坚持下来,多思考、少抱怨、勤动手,就很容易实现弯道超车!所以,不要问我现在干什么是否来得及。如果你看好一个事情,一定是坚持了才能看到希望,而不是看到希望才去坚持。相信我,只要坚持下来,你一定比现在更好!如果你还没什么方向,可以先关注我,这里会经常分享一些前沿资讯,帮你积累弯道超车的资本。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/15593.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

chatgpt赋能python:如何使用Python编写移动应用——将Python编译成APK

如何使用Python编写移动应用——将Python编译成APK 移动应用开发一直是全球最热门的行业之一。对于开发者来说,如何快速有效地开发出高质量的移动应用是至关重要的。Python语言一直以来都是开发者们的最爱,因为具备易于学习、灵活性和可重用性等优点。但…

chatgpt赋能python:如何使用Python将应用程序打包成APK文件

如何使用Python将应用程序打包成APK文件 如果你是一名Python开发人员,并且想要将你的应用程序打包成APK文件以供Android平台使用,那么你来到了正确的地方。在本文中,我们将向你展示如何使用Kivy和Python-for-Android将Python应用程序转换为A…

chatgpt赋能python:Python如何打包APK文件

Python如何打包APK文件 随着移动应用程序市场的增长,许多开发者开始使用Python来创建功能强大且用户友好的应用程序。但是,Python虽然在Web和数据分析领域非常流行,但在移动应用程序开发中并不像Java和Kotlin那样得到广泛应用。不过&#xf…

chatGPT与逆向的相遇,快速解决sslpinning抓包问题

项目场景: 这是一款金融类型的安卓app,有着root检测,与sslpinning校验,并且带有壳。下载的unpinning脚本根本行不通,接下来咱们看看该怎么去分析。众所知周,要分析一款app抓包只是第一步。偏偏是第一步就难倒不少人,本文只做知识要点记录,均会脱敏处理。大佬们轻喷 问…

chatgpt赋能python:Python怎么打包成APK

Python怎么打包成APK 如果你是一位有10年Python编程经验的工程师,并且想要将自己的Python应用程序打包成APK,那么你来对地方了。本文将会介绍如何使用Python来打包成APK,以及在不同平台上的一些注意事项。在阅读本文之后,你应该可…

chatgpt赋能python:Python编译成APK:一种更简便的移动应用开发方式

Python编译成APK:一种更简便的移动应用开发方式 Python已经成为最受欢迎的编程语言之一,它的简洁性和可读性使它既适合初学者又适合经验丰富的开发人员。但是,Python编写的应用程序通常只能在计算机上运行,而不能直接在移动设备上…

chatgpt赋能python:Python如何打包APK

Python如何打包APK Python是现代编程语言中最流行的之一,它是一种易于学习和使用的语言,因为它拥有直观的语法并且具有许多强大的工具和库。其互动性和可移植性使得Python适合用于开发各种类型的应用程序,包括移动应用程序。 在本文中&…

基础入门-ChatGPT结合安全融入技术高效赋能拓展需求

文章目录 Chatgpt科普利用:安全开发逆向免杀代码审计蓝队应急APT社工学其他相关: Chatgpt科普 ChatGPT是什么? ChatGPT–可能很多人被这个缩写的名字搞糊涂了,第一眼无法看出到底什么意思,GPT 的英文原文是 Generative Pre-train…

ubuntu系统配置远程登陆、clash、图像化配置

0、IP地址查看 ubuntu查看本机IP地址,先安装net-tools。并且记录你的ip地址xxx.xxx.xxx.xxx sudo apt install net-tools ifconfig 在winr打开输入cmd,如果在同一个局域网应该是可以ping通的 ping xxx.xxx.xxx.xxx 1、ssh连接和sftp连接 ubuntu 安装ssh …

failed to clash core,logs are not available(clash 核心连接失败)

问题描述 之前手欠在联想电脑管家修复了host,导致出现核心连接失败 操作系统 Windows x64 系统版本 windows10 出现问题“Clash 校心连接失败,日志不可用,可能故障-1核心api 端口故障--2.127.0.0.1 不通 -3. 核心并未启动” 后弹出 Windows Termi…

关闭Clash后Chrome或者Edge浏览器无法联网,只有打开clash才可以

在使用Clash的电脑上偶然遇到一个问题,关闭Clash后发现浏览器无法联网,只有打开Clash才可以,在Clash中选择direct模式能正常使用,但是关闭System Proxy或者退出Clash,浏览器都无法连接网络。 尝试将Clash和浏览器都更…

Ubuntu运行./clash -d .时报错

错误信息: 问题原因:没有配置Country.mmdb文件 解决办法: GeoLite2-Country.mmdb.gz dnqbob/sp_engine - Gitee.com (1)下载文件 (2)在clash目录下解压 (3)重命名为…

ikuuu clash无法导入配置文件

本人因为粗心,按照官方教程无法一键导进去配置文件,没有看到ikuuu.yaml文件 解决方法:记得先关闭系统代理,然后再导入配置文件

fildder weixin 记录clash冲突

x5 内核 debug 只debug 指定 debug时可以修改请求数据 时间过长,可以用脚本来修改。 修改请求。 var strBodyoSession.GetRequestBodyAsString(); // 用正则表达式或者replace方法去修改string strBodystrBody.replace("omvg-s1m3ShOkIz1C44OG383WIg&quo…

SHELL CLASH配置规则

本地环境 小米AX1800路由器,旧版(黢黑的四方立柱体,没有天线),已降级至固定版本小米 AX1800 1.0.336 问题 因为某些网络原因,在WiFi中安装了shell clash作为互联网代理,使用部分软件时提示网…

人工智能轨道交通行业周刊-第35期(2023.2.20-2.26)

本期关键词:重庆智慧轨道、智能运维主机、标准轨距、地方铁路公报、景深、机器视觉应用 1 整理涉及公众号名单 1.1 行业类 RT轨道交通人民铁道世界轨道交通资讯网铁路信号技术交流北京铁路轨道交通网上榜铁路视点ITS World轨道交通联盟VSTR铁路与城市轨道交通Rai…

计算机毕设——手机天气预报系统

目录 摘要1需求分析2一、开发背景2二、项目需求分析2总体设计2一、系统规划2二、系统功能界面3设置预报城市界面:3天气显示界面:4Widget 桌面小部件界面:5三.设计目标6系统设计6一、开发及运行环境6二、数据库设计6三、主要方法及…

人工智能轨道交通行业周刊-第33期(2023.2.6-2.12)

本期关键词:高铁激光清洗、高铁确认列车、无线通信系统、推理服务优化、量子信息技术 1 整理涉及公众号名单 1.1 行业类 RT轨道交通中关村轨道交通产业服务平台人民铁道世界轨道交通资讯网铁路信号技术交流北京铁路轨道交通网上榜铁路视点ITS World轨道交通联盟V…

逐句回答,流式返回,ChatGPT采用的Server-sent events后端实时推送协议Python3.10实现,基于Tornado6.1

善于观察的朋友一定会敏锐地发现ChatGPT网页端是逐句给出问题答案的,同样,ChatGPT后台Api接口请求中,如果将Stream参数设置为True后,Api接口也可以实现和ChatGPT网页端一样的流式返回,进而更快地给到前端用户反馈&…