当前位置:网站首页>有趣简单的M2处理器性能实验:Swift与C代码执行速度的比较
有趣简单的M2处理器性能实验:Swift与C代码执行速度的比较
2022-08-03 00:48:00 【大熊猫侯佩】
概述
Apple老是吹嘘自己的Swift语言有多么快,到底真相如何呢?大家可能都没有一个感性的认识。
在Mac上运行Swift与C语言编写的代码到底哪个更快呢?肯定很多小伙伴都会认为是C更快,如果真的如此,差距又有多少呢?
在Intel和M系列结构上,Swift与C语言比较又有什么质的差别呢?
在本篇,我们将用一个可能不太精确,但十分简单的例子来验证一下上面的Swift与C语言“快慢”之争。
让我们拭目以待吧!
测试代码
注意,本篇博文并不是一个在大多数环境或通用意义上代码用例的精确测试,如果大家希望这种测试,可以用专业的cpu性能测试工具来完成。
这里,我们仅用寥寥几行代码,给大家一个初步的感性体验,让小伙伴们感受到Mac的性感之处。
首先,是C语言的测试代码:
#include <stdio.h>
#include <sys/time.h>
int main() {
printf("Mac性能测试演示\n");
struct timeval tv;
for (int i = 0; i < 1000; i++) {
gettimeofday(&tv, NULL);
printf("[%d]: %ld.%d \n", i, tv.tv_sec, tv.tv_usec);
}
return 0;
}
注意,我们不能使用诸如ftime()、clock()之类的函数,因为它们精度不够。
这里,使用gettimeofday()函数,可以达到微秒级别的精度,可以基本满足我们目前的需求。
接着,是Swift语言的测试代码,就更简单了:
for i in 0..<1000 {
print("[\(i)]: \(Date.timeIntervalSinceReferenceDate)")
}
无论是C或Swift的测试代码,我们意图都是计算单次整数递增所花费的粗略时间。
再次申明:此计算比较不具有通用意义,不过很好玩很简单,略可管中窥豹而已。
喜欢较真的童鞋就别和我较真啦
Intel架构
我们首先来看Intel架构C语言的表现:
若我们只取最快的间隔周期,则可以看到最快只需2微秒左右。
再来看Swift的表现:
可以看到Swift代码最快可达到25微秒左右。
M2
现在,来测试一下M2处理器的表现,同样首先是C代码的执行结果:
可以看到,M2中C代码执行结果中,最短间隔达到了1微秒,和Intel CPU差距并不多。
最后,来看一下M2中Swift的表现:
Swift在M2的执行速度相当给力,最短间隔仅为3微秒左右,几乎达到Intel中C语言的速度。
所以,如果想充分榨干系统性能,还得靠底层的C语言;不过大多数情况下Swift还是能够满足性能要求的,更何况M2处理器上Swift有了更多加分的理由。
总结
本篇博文,我们一起在M2和Intel架构中,实验了C和Swift语言执行效率上非常简单的有趣比较。
下次有机会,可以加入汇编语言再试一下,不过那样的话微秒级别估计会不够用哦。
感谢小伙伴们一起参与这个实验小游戏,谢谢观赏,再会!
边栏推荐
猜你喜欢
随机推荐
js垃圾回收机制
【Gopher 学个函数】边学边练,简单为 Go 上个分
增删改查这么多年,最后栽在MySQL的架构设计上!
DB2数据库-获取表结构异常:[jcc][t4][1065][12306][4.26.14]CharConvertionException ERRORCODE=-4220,SQLSTATE=null
写一个简单的网站步骤
2149. 按符号重排数组
阿里云增强版实人认证--银行卡要素核验
Latex-查看预收录在arXiv.org上论文的TeX源文件
The Sandbox 市场平台将上线 Isla Obscura 第五期 NFT 作品集
「PHP基础知识」隐式数据类型
OpenWRT设置ipv6网络
关于地图GIS开发事项的一次实践整理(上)
暴力递归到动态规划 08(小马走象棋)
一个人的精力
向往的生活
软件定义网络实验之自定义拓扑开发
8-jwt工具类
优秀的 Verilog/FPGA开源项目总结及交流群
买了一瓶饮料
担心的事情