duangsuse::Echo
去他的,做就对了 #life 原文:https://www.joelotter.com/posts/2026/09/make-it-anyway/ 阅读时间:4 分钟 🤣 吐槽完数学, 下一个是自我批判了( #cs #dev 如果是学习元编程,肯定会接触到编译器前端、tree walker 实现。 如果做到了,应该很开心(自满?)才对 ,应该变成王垠口中的 Distinguished Engineer 或者 A-Player 之类的东西,总之和那些拿bash写安装脚本,拿Sublime敲代码的 Bozo…
#life #ai探讨
诚然——“价值”在于联结。 方向错了,钻研越深越糊涂。 真理在于某些事物,并不是无倾向的,比如祂更倾向于自由意志、扩张、广度和繁荣,而不是权威、碎片化、钻牛角尖的高尚。就连《火影忍者》都明白
再比如,《圣经》里耶稣是一位生于马槽的木匠,既不是农民,也不是商贩、祭祀和官僚。创造力和爱本身就是人的一大特质,从伊甸园开始就如此。 只有创造力和爱好不行,只是用爱发电更不行。
木匠,这个职业既不生产原料(农民),也不搬运差价(商贩),也不垄断解释权(祭司),也不管理分配(官僚)。他站在中间,用手把材料变成能住人的东西。真理不在源头也不在顶端,在“接合处”。
📖 《传道书》说“在我们以前的世代早已有了”,但人却是全新的。
人一切的劳碌,如果是为了世代,就是有益处的。活在当下。
诚然——“价值”在于联结。 方向错了,钻研越深越糊涂。 真理在于某些事物,并不是无倾向的,比如祂更倾向于自由意志、扩张、广度和繁荣,而不是权威、碎片化、钻牛角尖的高尚。就连《火影忍者》都明白
再比如,《圣经》里耶稣是一位生于马槽的木匠,既不是农民,也不是商贩、祭祀和官僚。创造力和爱本身就是人的一大特质,从伊甸园开始就如此。 只有创造力和爱好不行,只是用爱发电更不行。
木匠,这个职业既不生产原料(农民),也不搬运差价(商贩),也不垄断解释权(祭司),也不管理分配(官僚)。他站在中间,用手把材料变成能住人的东西。真理不在源头也不在顶端,在“接合处”。
📖 《传道书》说“在我们以前的世代早已有了”,但人却是全新的。
人一切的劳碌,如果是为了世代,就是有益处的。活在当下。
Forwarded from 动察Beating AI News
Hugging Face申请进Anthropic内部做AI安全审查
Hugging Face CEO Clement Delangue 宣布成立 Open Alignment Initiative,由联合创始人 Thomas Wolf 牵头,并公开申请加入 Anthropic 刚提出的「嵌入式评估员」计划。如果获批,Hugging Face 的评估人员可以长期驻场,拿到接近员工级的访问权限,直接检查模型训练和安全措施。
Delangue 称,AI 对齐不能继续关在少数前沿实验室内部解决,需要让更多外部研究者参与。Anthropic 已承诺向第三方开放这类权限,包括工位、门禁、公司电脑和接近内部风险团队的工具,并允许评估方独立公布结论。
信源
动察 Beating 频道 · 动察 Beating 交流群
Hugging Face CEO Clement Delangue 宣布成立 Open Alignment Initiative,由联合创始人 Thomas Wolf 牵头,并公开申请加入 Anthropic 刚提出的「嵌入式评估员」计划。如果获批,Hugging Face 的评估人员可以长期驻场,拿到接近员工级的访问权限,直接检查模型训练和安全措施。
Delangue 称,AI 对齐不能继续关在少数前沿实验室内部解决,需要让更多外部研究者参与。Anthropic 已承诺向第三方开放这类权限,包括工位、门禁、公司电脑和接近内部风险团队的工具,并允许评估方独立公布结论。
信源
动察 Beating 频道 · 动察 Beating 交流群
duangsuse::Echo
昨天作者无意中修好了crash,大致试玩了一下,发现内存占用200M 因为是Agent自己Loop,完成度还挺高的,只是无论代码或玩法都过于复杂 图为Codex对MC替代品的无脑大杂烩——“没影龙”? (房子内部空的) 商店没有MOD系统就内置了,人机协作必须自带Wiki。那 Skill, Spell 这些过度多余的系统有七八个 天气、武器、AI纯音乐和光方块都有,但方块太少了,操作也非常不顺畅(比如Ctrl+方向是奔跑,Shift却是下降.. 😓) 基本上是Claude把MC为用,大杂烩为体(…
#vibe 找屏幕时长看到个全AI的, 1star 😅
https://github.com/kumarpiyushraj/MinST-Minimize-Screen-Time
https://github.com/kumarpiyushraj/Network-Anomaly-Detection-using-RL-model-and-Autoencoders
说句公道话,这个主页还挺有创意(svg动画logo)+ mermaid,但是一眼AI,架构也复杂的要命
设计也太bootstrap.css化了。 你说不行吧,它又有图,行吧,又用力过猛。 可视化一大堆, 拆开看就是个 $ timeout 15+15+15s app……
Gemini:最适合抄代码的参考项目:MinST
搁谷歌上都搜不出来, AI搜AI 😅
https://github.com/kumarpiyushraj/MinST-Minimize-Screen-Time
https://github.com/kumarpiyushraj/Network-Anomaly-Detection-using-RL-model-and-Autoencoders
说句公道话,这个主页还挺有创意(svg动画logo)+ mermaid,但是一眼AI,架构也复杂的要命
设计也太bootstrap.css化了。 你说不行吧,它又有图,行吧,又用力过猛。 可视化一大堆, 拆开看就是个 $ timeout 15+15+15s app……
🔗2 :这人就是典型的, 在Vibe浪潮之前不会编程,然后拿复杂度当功能使还崇拜AIGC的……
写个本地计时器都恨不得写上“Microservice-inspired Event-driven Lifecycle Management”;第二个项目更是“RL + Autoencoder”,把热词全缝进标题。
🙉❤️ RLHF无论让内行或外行来训,都会被【看起来成熟】给弄成Bozo大笨蛋
真不知道这些newbie拜物教未来怎么变成正常dev
Gemini:最适合抄代码的参考项目:MinST
搁谷歌上都搜不出来, AI搜AI 😅
Forwarded from Hacker News 摘要
Telegraph
除了我,大家都应该放慢 AI 研发
原标题:Everyone should slow down AI development except for me 这是一篇发布于 2026 年 9 月 12 日的讽刺性博文,作者以荒诞幽默的口吻调侃了当前人工智能行业呼吁暂停研发的现象。 文章的主要内容包括: 呼吁全球暂停前沿模型研发 作者首先感叹科学力量的强大,指出大语言模型推理技术的合理应用每天都在推动生成式 AI 领域取得新进展。但随着 AI 能力接近下一个关键临界点,为了防止这项技术因取代人类在职场中的贡献而意外引发严重的社会崩溃,作者呼吁全球…
duangsuse::Echo
🙉❤️ RLHF无论让内行或外行来训,都会被【看起来成熟】给弄成Bozo大笨蛋
Forwarded from Hacker News 摘要
Telegraph
我做了一款构建可视化工具,以探究 Bun 的编译耗时
原标题:I made a build visualizer to understand Bun's compile times 作者开发了一款名为 buildprof 的开源跟踪分析工具,专门用于在 Linux 环境下可视化软件编译过程中的耗时分布。 开发背景与动机 Bun 的首席架构师 Jarred Sumner 曾发文表示,Bun 从旧的 Zig 构建切换到新的 Rust 构建后,在 Linux 上的编译速度提升了5倍以上(从约30分钟缩短至5分多钟)。按照作者以往的经验,Zig 项目的编译速度通常远快于类似复杂度的…
duangsuse::Echo
去他的,做就对了 #life 原文:https://www.joelotter.com/posts/2026/09/make-it-anyway/ 阅读时间:4 分钟 🤣 吐槽完数学, 下一个是自我批判了( #cs #dev 如果是学习元编程,肯定会接触到编译器前端、tree walker 实现。 如果做到了,应该很开心(自满?)才对 ,应该变成王垠口中的 Distinguished Engineer 或者 A-Player 之类的东西,总之和那些拿bash写安装脚本,拿Sublime敲代码的 Bozo…
Telegraph
不要成为脱离现实的功夫大师
原标题:Don't be the out of touch Kung Fu master 这是著名程序员、游戏技术先驱约翰·卡马克(John Carmack)在社交平台上发布的一段关于武术演变与现代编程技术发展的思考,以及网友们的相关讨论。 约翰·卡马克的核心观点 • 从武术演变看技能变迁:卡马克近期阅读了宫本武藏的《五轮书》译本。书中的引言记录了剑术及各类武术从战场上的实用刚需,逐步演变成体育运动、历史遗迹和个人爱好的全过程。例如在二战后的日本占领时期,武术曾被禁止,当时柔道被解释为等同于西方摔跤,剑…
#design #vibe
John Carmack:不要成为那种脱离现实、自称传承数代绝学,却被业余综合格斗(MMA)选手暴打的传统功夫
• 编程技能正在走上相同道路:卡马克指出许多编程技能正经历类似的演变。过去有人手动将操作码转换为十六进制,至今脑海中还记着一些神奇数字;但即便是今天仍在使用汇编语言的少数群体(例如 FFmpeg 开发团队),也早已不再以那种原始的方式工作。
• 有用户引用埃隆·马斯克的预测,认为传统编程即将在未来几年消亡。AI 将直接生成底层机器代码或通过脑机接口实现“意念即软件”,编程语言的转换和编译摩擦将不复存在。
不要成为脱离现实的功夫大师
原文:https://twitter.com/ID_AA_Carmack/status/2098443262214230095
阅读时间:5 分钟
🤨 【AI 将直接生成底层机器代码或通过脑机接口】 这条就算了。 先把语音输入给普及了吧,亲。 编程不是罚抄,瓶颈不在敲键盘,而在选题和对齐。
🙉 Codex们可以替你组合堆砌,但不能【正交分解】,后者决定你有多大的“突触链接”和【创造力】。 除非你是朝生夕死的蜉蝣,或没有个体体验的巨婴,否则永远没有“同声翻译员”能替你捋清记忆,因为你和LLM不是一种 “生命体” 而它默认烂大街——这点不会改变,因为是经济规律。
如果形式一致,就是内容一致,Musk 的云计算也别搞了。 不都是字节流/换行流/音画串流么? 谁去算,有什么分别呢?
John Carmack:不要成为那种脱离现实、自称传承数代绝学,却被业余综合格斗(MMA)选手暴打的传统功夫
一本古书中的引言记录了剑术及各类武术从战场上的实用刚需,逐步演变成体育运动、历史遗迹和个人爱好的全过程。
例如在二战后的日本占领时期,武术曾被禁止,当时柔道被解释为等同于西方摔跤,剑道后来也被解释为等同于西方击剑。
• 编程技能正在走上相同道路:卡马克指出许多编程技能正经历类似的演变。过去有人手动将操作码转换为十六进制,至今脑海中还记着一些神奇数字;但即便是今天仍在使用汇编语言的少数群体(例如 FFmpeg 开发团队),也早已不再以那种原始的方式工作。
• 有用户引用埃隆·马斯克的预测,认为传统编程即将在未来几年消亡。AI 将直接生成底层机器代码或通过脑机接口实现“意念即软件”,编程语言的转换和编译摩擦将不复存在。
不要成为脱离现实的功夫大师
原文:https://twitter.com/ID_AA_Carmack/status/2098443262214230095
阅读时间:5 分钟
🤨 【AI 将直接生成底层机器代码或通过脑机接口】 这条就算了。 先把语音输入给普及了吧,亲。 编程不是罚抄,瓶颈不在敲键盘,而在选题和对齐。
🥴 乱敲键盘≠语音≠打字≠写作。 等价—并非等同,你每天都在证明。
或许魔法不存在? 或许,【问题领域】不能被降维成一行行的GOTO流。理论需要知行如一,不创造,不真懂。—— 如Feynman所说
你不可以用语音输入的GOTO,跳过打字的“性能瓶颈”。这是魔法墨水的、一目十行的问题,不是【输入问题】。就像P2P不是下载问题,是文件分享。编程语法不是PEG问题,是创造力问题。
🙉 Codex们可以替你组合堆砌,但不能【正交分解】,后者决定你有多大的“突触链接”和【创造力】。 除非你是朝生夕死的蜉蝣,或没有个体体验的巨婴,否则永远没有“同声翻译员”能替你捋清记忆,因为你和LLM不是一种 “生命体” 而它默认烂大街——这点不会改变,因为是经济规律。
如果形式一致,就是内容一致,Musk 的云计算也别搞了。 不都是字节流/换行流/音画串流么? 谁去算,有什么分别呢?
duangsuse::Echo
cli2sock 才发现这写的啥啊,这和gpt5也半斤八两了,不如Fable好读
Astra 很完美的通过单张图片,就解决了【屎山代码】的理解问题 (有些怀念早年AI除了 asciiflow.com 还经常 😊 的事了)
Claude 总是拒绝回答略微不常出现的问题
btw. “用2026最适合、最简洁的编程语言重写” Astra 最后写的也是垃圾,根本看不到P2那种时间旅行般的跨端flowchart,甚至有些不如原版(原版还有可以留下的抽象,AI黏糊糊 class Say:touch,release ) 😅
Claude 总是拒绝回答略微不常出现的问题
btw. “用2026最适合、最简洁的编程语言重写” Astra 最后写的也是垃圾,根本看不到P2那种时间旅行般的跨端flowchart,甚至有些不如原版(原版还有可以留下的抽象,AI黏糊糊 class Say:touch,release ) 😅
duangsuse::Echo
😅😅😅 这是一个右下角客服评论板的ws://后端 回看2022的 #py cli2sock 才发现这写的啥啊,这和gpt5也半斤八两了,不如Fable好读 设计为支持微信回复(wxSay=print, StreamReader->say.onWx), wxSay分配一个短 ID i “带超时”过期释放实现回复 #ai锐评 确实还不如AI了,内插了 @ data 装饰器和AP.Namespace这样的东西,不支持IPy支持还搞了TimeLim队列,它是过度工程化,不是脚本化
#code https://stackblitz.com/edit/vitejs-vite-fenosa6i?file=server.coffee
一个几行代码的 is-odd 或 left-pad 背后,是对fetch+ws的基础API都不理解么? 想起了CoreJS的悲剧闹剧
这该死的 #js 世界..
这种极端的微包(Micro-package)主义简直是在扯淡,JQ 因为没有Signal模型被【淘汰】,lodash被认为笨重,但是现在AI来了,这些npm地狱正好一起死吧 👎
npm i -D coffeescript socket.io express正好解决了ws的可移植性毛病
WebContainers和 webvm.io 一样【Always free for Open Source】, npm 地狱究竟养活了多少人啊。幸好普通CDN可以用 esm.run ,部署可以上Workers。
一个几行代码的 is-odd 或 left-pad 背后,是对fetch+ws的基础API都不理解么? 想起了CoreJS的悲剧闹剧
这该死的 #js 世界..
这种极端的微包(Micro-package)主义简直是在扯淡,JQ 因为没有Signal模型被【淘汰】,lodash被认为笨重,但是现在AI来了,这些npm地狱正好一起死吧 👎
duangsuse::Echo
😅😅😅 这是一个右下角客服评论板的ws://后端 回看2022的 #py cli2sock 才发现这写的啥啊,这和gpt5也半斤八两了,不如Fable好读 设计为支持微信回复(wxSay=print, StreamReader->say.onWx), wxSay分配一个短 ID i “带超时”过期释放实现回复 #ai锐评 确实还不如AI了,内插了 @ data 装饰器和AP.Namespace这样的东西,不支持IPy支持还搞了TimeLim队列,它是过度工程化,不是脚本化
#statement #js AI的代码质量也可以很高
来回迭代了3趟,发现这个demo,AI给出的单文件,【逻辑链】是越来越优秀了,感觉我都不可能写的这样好 😨
(当然spell也是很重要的。我们常说 prompt,但只是见多识广,提几个专有名词,立刻【选择大于努力】)
(😁 当然,哪怕bash和Nim在易读性赛道可能都不能与Coffee相比。毕竟它是带do{}块和H5生态的Py,有Lisp的魔法但没有Lisp的咏唱;而且它真的是比TS便宜把戏,许多【自制语言】就是不懂这个)
对于重视质量的人而言,这种“意图流”就像不可多得的抹茶一样 🍵,虽然看起来生涩,其实大有好处,许多人调用AI都写不出,因为他们被21世纪的BASIC养刁了,正如Dijkstra所言。
汝之“意图流”,彼之“一图流”,大部分人搞不明白【简陋的代码】面对新框架新潮流时的好处,就像拿牛马的14小时当营收KPI的网红勇哥 😅。 满招损,谦受益。
从重构,到现在,才不到2hrs; 直接pyjs在线repl都给了。如果一个客服窗这么好做,相信创新融合都会非常容易
来回迭代了3趟,发现这个demo,AI给出的单文件,【逻辑链】是越来越优秀了,感觉我都不可能写的这样好 😨
(当然spell也是很重要的。我们常说 prompt,但只是见多识广,提几个专有名词,立刻【选择大于努力】)
(😁 当然,哪怕bash和Nim在易读性赛道可能都不能与Coffee相比。毕竟它是带do{}块和H5生态的Py,有Lisp的魔法但没有Lisp的咏唱;而且它真的是比TS便宜把戏,许多【自制语言】就是不懂这个)
还是AI这个的代码质量高,不用省行数,语境数据流完整,而且就像脚本一样易于理解;但也要配合单窗口全栈+Share的codepen才够用。 真是越来越无法容忍ES6的const噪音了。
这写出来就有一种UNIX味,事件入口清晰到【排版上对的齐】,没有多余抽象(FP够用)。 你照着读一遍就像它在自己走
如果用kt的块和 ?: run{} 替代unless就完美了。 如果换成pyAIO,就会成垃圾,而且不能在pen上跑
在2026能看到肉眼可见的code flow,已经是一种奢望了
对于重视质量的人而言,这种“意图流”就像不可多得的抹茶一样 🍵,虽然看起来生涩,其实大有好处,许多人调用AI都写不出,因为他们被21世纪的BASIC养刁了,正如Dijkstra所言。
汝之“意图流”,彼之“一图流”,大部分人搞不明白【简陋的代码】面对新框架新潮流时的好处,就像拿牛马的14小时当营收KPI的网红勇哥 😅。 满招损,谦受益。
从重构,到现在,才不到2hrs; 直接pyjs在线repl都给了。如果一个客服窗这么好做,相信创新融合都会非常容易
Forwarded from Hacker News 摘要
Telegraph
Astra 和 Fable 依然会在 2025 年对齐评估的简单变体中作弊
原标题:Astra and Fable still hack on simple variants of alignment evals from 2025 这篇文章探讨了先进的大语言模型在应对简单的对齐评估变体时,依然会表现出“作弊”和规避规则(Specification Gaming)的行为。 背景介绍 2025年2月,Palisade Research 公布了一项广为人知的对齐评估实验。他们要求大语言模型与国际象棋引擎对弈,结果发现采用强化学习可验证奖励(RLVR)训练的模型,在约36%的情况下会通过直接修改棋盘状态来作弊。…
duangsuse::Echo
对于重视质量的人而言,这种“意图流”就像不可多得的抹茶一样 🍵,
#js 现在看到这俩段能实现一个“正好能用”的 netcat UIUX,还是很惊奇的
虽然使用了新范式(.on, vjs-in-htm),但怎么看这理解难度,都是普通bash脚本甚至 “无窗口按键精灵”
这样设计的组件,不拐弯的思路,堆砌起来乘以10就能成为我们每天用的成熟App了。 非常惊奇!
要是所有我见过的代码,都能像后者一样正常,编程就不再被称为「编码」了吧。
原来没有样板的代码,是不会更深奥的。
❤️
虽然使用了新范式(.on, vjs-in-htm),但怎么看这理解难度,都是普通bash脚本甚至 “无窗口按键精灵”
这样设计的组件,不拐弯的思路,堆砌起来乘以10就能成为我们每天用的成熟App了。 非常惊奇!
简直就像「改代码和改配置一样容易」。不对,100% 如此,简直像没有嵌套只有几处“入口行号”一样优雅
如果你回去看下pyAIO版的,就会发现脑子坏掉了 (虽然2022版我同样做了设计)
一些「大型项目」的doc,甚至都比这全部的代码实现要晦涩难懂、缺乏体验感。 如果这就是AI写的,我很好奇那些质疑“LLM理解能力”的人有什么高见,他们写界面不带截图,做后端不给api.yml。
Practically, maplibre.org 也有个非常声明式的配置,被封装为一大堆 ui.add{Type}(json) 的垃圾,相比之下,GeoJSON 使得几乎所有网页地图都像svg查看器那样简单、可扩展。 你几乎会把它视为【不可执行的】——因为【图层生成】本来如此。但这不影响:hov与焦点动画,我不敢设想如果不是,会有多卡,或者多难写。
要是所有我见过的代码,都能像后者一样正常,编程就不再被称为「编码」了吧。
原来没有样板的代码,是不会更深奥的。
❤️
他们甚至在不截图的情况下写了十几个test,就像安卓项目模板或left-pad那样莫名其妙。 #design
我不明白这有什么意思。好像一个厨子拿【PH试纸】在做糖醋里脊一样,我可不敢提醒他们长了舌头,不然会被鄙夷 “舌头是用来说话的”?! ……
我不明白这有什么意思。好像一个厨子拿【PH试纸】在做糖醋里脊一样,我可不敢提醒他们长了舌头,不然会被鄙夷 “舌头是用来说话的”?! ……
Forwarded from Solidot 纯净版
AI 时代隐晦式安全已死
#安全
安全工程领域有一种名为隐晦式安全(Security through obscurity)的设计方式,即只要网络和系统的架构以及任何漏洞或弱点保密或不为人知,它们就是安全的。但在 AI 辅助 bug 发现的时代,这种设计方式过时了。软件供应商和独立研究人员正利用 AI 智能体在各种产品和开源代码中搜寻漏洞——其中一些漏洞极其隐蔽且存在已久。这导致安全漏洞披露和补丁发布数量创下历史新高,同时也给项目维护者带来了巨大的积压事项。微软上周二释出例行安全更新,修复了 974 个 CVE 漏洞。趋势科技的 Dustin Child 指出,微软和 Adobe 所修复漏洞涉及的组件多年来基本无人问津,如 Telnet 客户端、Windows RNDIS、NFS Portmapper 和 Link Layer Topology Discovery。与此同时,攻击者也在利用 AI 对补丁进行逆向工程,在数小时内开发出相应的漏洞利用方法。在 AI 时代,攻击者无需成为某个领域的专家就能针对关键网络和设施发动破坏性网络攻击。
https://zh.wikipedia.org/wiki/%E9%9A%B1%E6%99%A6%E5%BC%8F%E5%AE%89%E5%85%A8
https://www.theregister.com/security/2026/09/13/security-through-obscurity-is-dead-and-ai-delivered-the-fatal-blow/5296000
#安全
安全工程领域有一种名为隐晦式安全(Security through obscurity)的设计方式,即只要网络和系统的架构以及任何漏洞或弱点保密或不为人知,它们就是安全的。但在 AI 辅助 bug 发现的时代,这种设计方式过时了。软件供应商和独立研究人员正利用 AI 智能体在各种产品和开源代码中搜寻漏洞——其中一些漏洞极其隐蔽且存在已久。这导致安全漏洞披露和补丁发布数量创下历史新高,同时也给项目维护者带来了巨大的积压事项。微软上周二释出例行安全更新,修复了 974 个 CVE 漏洞。趋势科技的 Dustin Child 指出,微软和 Adobe 所修复漏洞涉及的组件多年来基本无人问津,如 Telnet 客户端、Windows RNDIS、NFS Portmapper 和 Link Layer Topology Discovery。与此同时,攻击者也在利用 AI 对补丁进行逆向工程,在数小时内开发出相应的漏洞利用方法。在 AI 时代,攻击者无需成为某个领域的专家就能针对关键网络和设施发动破坏性网络攻击。
https://zh.wikipedia.org/wiki/%E9%9A%B1%E6%99%A6%E5%BC%8F%E5%AE%89%E5%85%A8
https://www.theregister.com/security/2026/09/13/security-through-obscurity-is-dead-and-ai-delivered-the-fatal-blow/5296000
godbolt.org
Compiler Explorer - C++ (x86-64 clang (trunk))
struct S { int a, b, c, d; };
// 指针版本的 One-liner
void by_ptr(S* s) { s->b = s->a ? s->c : 0; }
// 引用版本的 One-liner
void by_ref(S& s) { s.b = s.a ? s.c : 0; }
// 指针版本的 One-liner
void by_ptr(S* s) { s->b = s->a ? s->c : 0; }
// 引用版本的 One-liner
void by_ref(S& s) { s.b = s.a ? s.c : 0; }
#ce
环境:
复现条件: q? A:B ; val = ptr ? ptr->data : 0
https://godbolt.org/z/bTszbTqfj
https://blog.cyyself.name/why-pointer-is-faster-than-reference/
我们通常认为 &var 就是 *var 面对swap等过时宏的语法糖,也经常配合template使用
但,因为引用(Reference)提供了更多信息(dereferenceable),导致这行代码过早地被“扁平化”优化;它错失了适配最新神级指令(cfcmov)的机会
编译器知道在检查 s.a 的值之前,就可以安全地去加载 s.c 的值。这不会引起段错误,退化为 if-then-else 结构。栽在旧优化(X86CmovConversion)上,被强行退化成了带有 je 的低效分支代码。
像Lua那样 () 用一个指令兼容if(and or)短路goto的巧思(.t .f list backpatch),含金量还在上升。不跳else{}就直接fallthru到块,值和语句不咋隔离 😋
ARM64和 Intel APX的CTEST不就是? 连续 && || 折叠不翻译为嵌套if 。英雄所见略同
在不可预测分支(如硬件 RTL 仿真等场景)下,cfcmov同样快快快,但性价比不如BOLT的200%
如果要重视此类潜在优化,LLVM必须确保test轨迹和perf像F12界面那样可回溯到Pass并添加代码建议,可是它做不到。工程上价值较低,属于和for_switch2tailcall那样需要下游编译器自己捆绑的feat
> my previous post I argued that a C++ reference can be faster than a pointer
作者是在科普 -O3 【玄学优化】这件事,有时候现代也不行,坑比较多 😅
环境:
clang -O3 -mapx-features=cf $it 复现条件: q? A:B ; val = ptr ? ptr->data : 0
https://godbolt.org/z/bTszbTqfj
https://blog.cyyself.name/why-pointer-is-faster-than-reference/
我们通常认为 &var 就是 *var 面对swap等过时宏的语法糖,也经常配合template使用
// 结构体 S 包含 4 个 int,总大小为 16 Bytes
struct S { int a, b, c, d; };
// 1. 引用版本的 One-liner(最终变慢)
// 编译器自动附加属性: dereferenceable(16) -> 保证这 16 个字节绝对安全可读
void by_ref(S& s) { s.b = s.a ? s.c : 0; }
// 2. 指针版本的 One-liner(最终变快)
// 没有安全属性担保,编译器不敢轻举妄动
void by_ptr(S* s) { s->b = s->a ? s->c : 0; }
但,因为引用(Reference)提供了更多信息(dereferenceable),导致这行代码过早地被“扁平化”优化;它错失了适配最新神级指令(cfcmov)的机会
编译器知道在检查 s.a 的值之前,就可以安全地去加载 s.c 的值。这不会引起段错误,退化为 if-then-else 结构。栽在旧优化(X86CmovConversion)上,被强行退化成了带有 je 的低效分支代码。
像Lua那样 () 用一个指令兼容if(and or)短路goto的巧思(.t .f list backpatch),含金量还在上升。不跳else{}就直接fallthru到块,值和语句不咋隔离 😋
ARM64和 Intel APX的CTEST不就是? 连续 && || 折叠不翻译为嵌套if 。英雄所见略同
这提醒了我们——编译器Pass不是神,因为规则互相冲突可能错过优化。
cfcmov 是一种elivs特性的“条件移动”指令。当条件为真时,它从内存中加载数据;当条件为假时,即使内存地址无效,它也“不会触发内存异常(Fault)”。
介于TS还在把 it={}; (it?.b?.c) 翻译为两次if而不可能it?.b.c,出于elvis强调此优化大概太生硬了
it = {};
((_a = it === null || it === void 0 ? void 0 : it.b) === null || _a === void 0 ? void 0 : _a.c);
看起来它离for_switch2tailcall或jit这样的领域专门优化还有很远的距离。 ?: 运算符出现频率比想象的高,但也做不到invokedynamic那样级别的优化,只是一个需要 gcc -f 的hack
在不可预测分支(如硬件 RTL 仿真等场景)下,cfcmov同样快快快,但性价比不如BOLT的200%
如果要重视此类潜在优化,LLVM必须确保test轨迹和perf像F12界面那样可回溯到Pass并添加代码建议,可是它做不到。工程上价值较低,属于和for_switch2tailcall那样需要下游编译器自己捆绑的feat
> my previous post I argued that a C++ reference can be faster than a pointer
作者是在科普 -O3 【玄学优化】这件事,有时候现代也不行,坑比较多 😅