写点什么

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:384830

评论

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

敏捷监控与可观察性

FunTester

C 语言文件处理全攻略:创建、写入、追加操作解析

小万哥

程序人生 编程语言 软件工程 C/C++ 后端开发

软件测试/测试开发/全日制|Pytest如何灵活地运行用例

霍格沃兹测试开发学社

2024第十届上海国际智慧工地展览会

AIOTE智博会

智慧工地展览会 智慧工地展会 智慧工地展

Databend 开源周报第 127 期

Databend

百度搜索exgraph图执行引擎设计与实践

百度Geek说

百度搜索 企业号 1 月 PK 榜 图执行 图执行引擎 DAG执行图

软件测试/测试开发/全日制 |使用Django构建高效的Web应用

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

测试

左耳听风 - 我对技术的态度「读书打卡 day 02」

Java 工程师蔡姬

读书笔记 程序员 读书 左耳朵耗子

创业清华人丨 乔嘉林:破茧成蝶,时序数据库赋能工业物联网

Apache IoTDB

服务器比较常见几个的故障问题

德迅云安全_初启

使用Terraform部署华为云和kubernetes资源

华为云开发者联盟

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

让代码不再枯燥,变成你的快乐伙伴! -超过200+的python趣味编程系列-完整源码(保证可运行)+执行效果(持续更新ing)

顺顺顺

Python 游戏

软件测试/测试开发/全日制 |Python全栈开发:构建跨平台、可移植的应用

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

测试

跨境电商通讯服务

cts喜友科技

通信 通讯

系统存储架构升级分享 | 京东云技术团队

京东科技开发者

软件测试/测试开发/全日制 |使用Socket.IO实现实时通信

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

测试

技嘉推出 GEFORCE RTX 40 SUPER 系列显卡

财见

2024年CoinList上第一个项目Subsquid

币离海

Coinlist Subsquid SQD

软件测试/测试开发/全日制|pytest如何标记测试用例

霍格沃兹测试开发学社

软件测试/测试开发全日制培训|Pytest跳过用例和失败重试

霍格沃兹测试开发学社

漫画IT | 关于你天天用的OS与Git

极狐GitLab

[大厂实践] DoorDash基于eBPF的监控实践

俞凡

云原生 监控 ebpf 大厂实践

MT7915: Demonstrating the glorious history of wireless communications

wallysSK

5G之味,在烟火长沙

脑极体

5G

为什么建筑设计师选择网络渲染"效果图"

Renderbus瑞云渲染农场

云渲染 云渲染农场 效果图渲染

一款完整的单节锂离子电池采用恒定电流/恒定电压线性充电器

芯动大师

软件测试/测试开发/全日制 |解析Web应用中的日志与监控

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

测试

面试官:分布式锁最终解决方案是RedLock吗?为什么?

王磊

Java 面试

用友全球司库十问(九)|企业为什么需要银企直联?

用友BIP

全球司库

JavaScript 常见错误与异常处理

京东科技开发者

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