当前位置:网站首页>有趣简单的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语言执行效率上非常简单的有趣比较。
下次有机会,可以加入汇编语言再试一下,不过那样的话微秒级别估计会不够用哦。
感谢小伙伴们一起参与这个实验小游戏,谢谢观赏,再会!
边栏推荐
猜你喜欢
随机推荐
torchvision.datasets.ImageFolder使用详解
【TypeScript笔记】01 - TS初体验 && TS常用类型
Carefully organize 16 MySQL usage specifications to reduce problems by 80% and recommend sharing with the team
【软考 系统架构设计师】软件架构设计① 软件架构的概念
alibaba数据同步组件canal的实践整理
Last Common Ancestor (LCA) Study Notes | P3379 【Template】Least Common Ancestor (LCA) Problem Solution
6-接口跨域处理
鲲鹏devkit开发套件
买了一瓶饮料
【飞控开发高级教程2】疯壳·开源编队无人机-遥控整机代码走读、编译与烧写
嵌入式开发:嵌入式基础——’ ’和” ”的区别
高并发基石:多线程、守护线程、线程安全、线程同步、互斥锁,一文扫尽!...
10大领域5大过程47子过程快速记忆
通力传动递交注册:年营收4.7亿 实控人项献忠家族色彩浓厚
牛客网剑指offer刷题练习之链表中环的入口结点
10. SAP ABAP OData 服务如何支持修改(Update)操作
2022-08-02:小红拿到了一个大立方体,该大立方体由1*1*1的小方块拼成,初始每个小方块都是白色。 小红可以每次选择一个小方块染成红色, 每次小红可能选择同一个小方块重复染色, 每次染色以后,
Nacos配置中心之事件订阅
The Multiversity 的 “非常重要的生命体” NFT 推出
FreeRTOS任务管理









