写点什么

Swift 并不像苹果说的那么快:第一次基准测试

  • 2014-06-13
  • 本文字数:873 字

    阅读完需:约 3 分钟

性能是苹果声称新编程语言Swift 将带给OS X 和iOS 开发人员的好处之一。然而,由独立开发者执行的第一次实验和基准测试显示,Swift 在某些场景的性能并不如人意。

开发人员 Jukka Suomela 在 Stack Overflow 发表了一篇帖子说明他的发现。当用 Swift 实现一个算法时,他注意到其性能非常差。深入分析后,Jukka 最终发现代码的主要瓶颈来自一个数组排序这样的简单任务。

事实上,Swift 对 100 万个随机整数的数组进行排序,需要耗时 6 秒,而 C++ 只用了 0.06 秒,Python 为 0.6 秒。这些测试使用的是 -O3 编译优化级别,这是 Xcode 发布构建时常用的级别。Jukka 说,如果禁用所有编译优化,即对应于 Xcode 调试构建的 -O0,上述测试用了 88 秒。

Stack Overflow 上回复该帖的其他开发人员证实了 Jukka 的发现。开发人员 sjeohp 用 Swift 实现快速排序算法时,发现如果不启用编译优化(-Onone)会比C 慢1000 倍。另一方面,他发现当强制积极的编译优化(-Ofast)时,Swift 比C 稍快。Stack Overflow 的另一个帖子描述了图像处理测试,也强调了类似的研究结果。

根据 LLVM 文档,积极优化忽略了严谨的标准规范。-Ofast 启用了所有 -O3 优化并开启了 -ffast-math,后者放宽了 IEEE 或 ISO 的数学函数规范,可能导致那些应该具有规范保证的程序产生不正确的输出。此外,-Ofast 禁用了整型溢出和数组下标越界的检查,因此降低了 Swift 的安全特性。

Jukka 进行了深入分析,他在编译器对另一个测试所生成的汇编代码中,发现一个数组的简单循环产生了大量的内存管理调用(保留和释放),而这是完全没有必要的。这个测试没有涉及数学,因此主要的性能瓶颈似乎来自这些无用的调用。

数名开发人员指出 Swift 仍然处于 Beta 状态,这可能是 Swift 当前这种行为的最好解释。具体来说,文中提到的毫无必要的释放 / 保留调用暗示了ARC 优化存在一些Bug,可能不需要积极优化就可以修复

因为该语言仍处于Beta 状态,苹果不会允许开发者提交Swift 开发的应用进行审查。 Xcode 的最终版本预计在今年秋天发布

查看英文原文: Swift Might Not Be As Fast As Apple Claims It To Be: First Benchmarks

2014-06-13 09:384849

评论

发布
暂无评论
发现更多内容

每日一题:LeetCode-138. 随机链表的复制

Geek_4z9ami

算法 链表 LeetCode Go 语言 回溯

COB封装LED显示屏vs. SMD封装LED屏

Dylan

技术 封装 LED LED display LED显示屏

Flask请求与响应-接口路由请求方法(methods=[“”])

测试人

软件测试 测试 自动化测试 测试开发

2023京东零售技术年度盘点

京东科技开发者

Prometheus最佳实践 Summary和Histogram

华为云开发者联盟

开发 华为云 华为云开发者联盟

鸿蒙5.0发布时间已定!鸿蒙系统上的App开发新思路

FinFish

鸿蒙 小程序生态 小程序容器 鸿蒙Next 鸿蒙5.0

玩转数据处理利器:学会使用 YAML 文件轻松处理数据

测吧(北京)科技有限公司

测试

测试管理进阶 | 如何打造一份出彩的工作汇报!

测吧(北京)科技有限公司

测试

全国独家线下面授 | 上海 · 大规模敏捷认证LeSS实践者课程3月14-16日火热报名

ShineScrum

大规模敏捷 LeSS认证 CLP认证 LeSS认证实践者

为什么选择 NineData 作为 MongoDB 的最佳拍档?

NineData

mongodb NineData MongoDB 数据库管理工具 MongoDB数据库

深入探析MySQL数据库:优势、版本与发展全面解读

小魏写代码

重磅来袭“2024粤港澳电子展”覆盖电子信息完整产业链

AIOTE智博会

电子展 电子信息展 电博会

玩转数据处理利器:学会使用 YAML 文件轻松处理数据

霍格沃兹测试开发学社

请谨慎选择工作offer

老张

面试 求职面试 offer大厂

软件测试学习笔记丨抓包工具Charles实战

测试人

软件测试

华为云低代码问答——低代码为什么这么“香”

低代码 华为云

大数据平台红蓝对抗 - 磨利刃,淬精兵!

京东科技开发者

轻松上手:通过阿里云PAI QuickStart微调部署Qwen-72B-Chat模型

阿里云大数据AI技术

「我在淘天做技术」智能对话新纪元:百万日活对话机器人的LLM落地实践

阿里技术

招聘 对话机器人 LLM 我在淘天做技术 落地实践

软件测试/测试管理|如何打造一份出彩的工作汇报!

霍格沃兹测试开发学社

深度解析SD-WAN和混合WAN的网络方案区别

Ogcloud

SD-WAN SD-WAN组网 SD-WAN服务商

应用集成(iPaaS)和数据集成(ETL)高效协同的最佳实践

谷云科技RestCloud

ETL 数据集成 应用集成 ipaas

谷歌 2024 新年目标曝光:一边做地表最强 AI,一边裁更多员工丨 RTE 开发者日报 Vol.132

RTE开发者社区

文心一言 VS 讯飞星火 VS chatgpt (185)-- 算法导论14.1 2题

福大大架构师每日一题

福大大架构师每日一题

部署SD-WAN需要多长时间?多少钱?

Ogcloud

SD-WAN SD-WAN组网 SD-WAN服务商

第37期 | GPTSecurity周报

云起无垠

【教程】混淆Dart 代码

Java开发中不要使用受检异常

码界行者

Java 异常

火山引擎ByteHouse:“专用向量数据库”与“数据库+向量扩展”,怎么选?

字节跳动数据平台

数据库 大数据 云原生 Clickhouse 企业号 1 月 PK 榜

Swift并不像苹果说的那么快:第一次基准测试_Android/iOS_Sergio De Simone_InfoQ精选文章