写点什么

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

评论

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

云效x钉钉:让研发工作更简单

阿里云云效

阿里云 云原生 钉钉 研发 云钉一体

关于大数据计算框架Flink内存管理的原理与实现总结 | 社区征文

张浩_house

大数据 flink 新春征文

网易传媒Go语言探索

月读

golang 开源治理

vivo 评论中台的流量及数据隔离实践

vivo互联网技术

mongodb 中台 分布式

奥运吉祥物——冰墩墩太难抢了,Python给你画一个

王小王-123

Python

如何帮助金融客户“用好云”?

阿里云云效

阿里云 运维 云原生 云平台 阿里云混合云

一文读懂 Serverless 的起源、发展和落地实践

Serverless Devs

2月月更

sql 学习笔记

孙青

优秀程序员的30种思维--行为准则篇(11/100)

hackstoic

金融云原生漫谈(七)|云原生时代:从传统运维到智能运维的进阶之路

York

容器 云原生 金融科技 智能运维

JVM进阶(十二):JAVA 可视化分析工具

No Silver Bullet

JVM 监控工具 2月月更

王者荣耀商城异地多活架构设计

swallowluo

架构实战营 #架构实战营 「架构实战营」

推荐系统基础结构总结 | 社区征文

张浩_house

推荐系统 大数据开发 新春征文

如何用建木CI导入导出Redis数据

Jianmu

DevOps CI/CD Redis 数据结构

零代码技能平台技术实践探索

OPPO小布助手

人工智能 低代码 零代码 智能助手 对话系统

面向推理训练一体化的 MNN 工作台

阿里巴巴终端技术

端智能

人手一个数字人还有多远?百度吴甜做客央视《对话》

百度大脑

渗透测试之中间件漏洞复现

网络安全学海

黑客 网络安全 信息安全 渗透测试 安全漏洞

辩论这件事,其实不止奇葩说

小鲸数据

监控治理有效性评价体系

焦振清

监控治理 评价体系

Spring Boot Serverless 实战 | Serverless 应用的监控与调试

Serverless Devs

Moviepy+OpenCV-python结合进行音视频剪辑处理 | 社区征文

老猿Python

音视频 Moviepy 数字图像处理 新春征文 OpenCV-Python

卷起来了!软件开发正在越来越快……

飞算JavaAI开发助手

你在央视春晚抢红包,京东云却在后台玩起了“剧本杀”

脑极体

恒源云(GPUSHARE)_社区大佬的论文小记(Flooding-X)

恒源云

深度学习 计算机视觉

读 Go 源码,可以试试这个工具

AlwaysBeta

Go golang 源码 源码解析 Go 语言

在线IEEE浮点二进制计算器工具

入门小站

工具

Lazada D11 体验升级技术实践

阿里巴巴终端技术

ios android 客户端开发 移动端 体验优化

第八节:SpringBoot指定配置文件配置三

入门小站

Java

golang 面试总结

yuexin_tech

golang 面试

Web Components 系列(二)—— 关于 Custom Elements

编程三昧

前端 组件化 2月月更

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