有趣简单的m2处理器性能实验:swift与c代码执行速度的比较(代码片段)

大熊猫侯佩 大熊猫侯佩     2022-10-22     649

关键词:

概述

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语言执行效率上非常简单的有趣比较。

下次有机会,可以加入汇编语言再试一下,不过那样的话微秒级别估计会不够用哦。😎

感谢小伙伴们一起参与这个实验小游戏,谢谢观赏,再会!

与 C 代码相比,Neon 内在代码不会提高性能

...我看不到代码执行时间有任何减少。我正在使用ARMCortex-A9处理器。下面是我 查看详情

苹果也吹牛,m2处理器性能确实优秀,但是却与intel存在很大差距

苹果推出的M系处理器确实很优秀,最新的M2处理器已与Intel的i9处理器相当,不过这其实有误导的成分在内,M2处理器所谓与i9相当,仅仅是在单核方面,而在多任务处理方面其实与Intel存在很大差距。苹果作为... 查看详情

swift_dynamiccast 处理过多并影响 iOS 中的性能

】swift_dynamiccast处理过多并影响iOS中的性能【英文标题】:swift_dynamiccasttakingtoomuchinprocessingandaffectingperformanceiniOS【发布时间】:2017-05-1102:58:40【问题描述】:我在解析和创建来自服务器的json数据的一些组合方面进行了大量计算... 查看详情

csharp简单(未经优化!)粒子群。将它贴在带有particlesystem的gameobject上,并与检查员一起玩一些有趣的结果。c(代码片段)

查看详情

[译]swift编译器性能

...而非代码运行的速度。虽然本指南较长,但内容其实相当简单。在很大程度上,性能分析需要耐住性子、考虑周全且坚持不懈,谨小慎微且始终如一地测量,并逐步消除噪音且专注于一个信号。影响编译性能的流程与因素概述 查看详情

进程与线程简单实验(代码片段)

...有两个线程,主线程创建子线程实现Sum累加分析各执行体处理器使用,内存使用等基本信息 【分析】要写这个先得看forkexecpthread函数啦!有几个博客很有帮助https://www.cnblogs.com/amanlikethis/p/5537175.htmlhttps://blog.csdn.net/nan_lei/articl... 查看详情

实验七信号(代码片段)

...目标了解信号的概念,掌握信号处理的方法1、编写一个简单的程序并运行,然后向该进程发送不同的信号以观察该进程对接收到信号的反应。hello.c修改后hello.cCTRL+ZCTRL+\\在另一个终端上使用kill编写一个简单的程序,该程序调用k... 查看详情

编译原理实验二简单计算器的设计与实现(代码片段)

实验二 简单计算器的设计与实现 一、实验目的  综合运行词法分析器、语法分析器等原理实现一个具有加、乘功能的简单计算器,该计算器满足乘法优先级高于加法优先级,且仅处理非负整数。二、实验内容  1.... 查看详情

向前传递数据时的 Swift 有趣的 NSExceptionError

】向前传递数据时的Swift有趣的NSExceptionError【英文标题】:SwiftInterestingNSExceptionErrorWhenPassingDataForward【发布时间】:2018-08-2510:07:42【问题描述】:我在这里有一个非常简单的问题,我无法解决。这段代码运行良好,引导我进入第... 查看详情

github上都有哪些比较有趣的php项目?

参考技术Aswoole,C扩展实现的PHP异步并行网络通信框架,可以重新定义PHP。过去PHP只能做Web项目,现在有了Swoole。任意服务器端程序都可以用PHP写。swoole_framework,基于swoole扩展开发的一个开发框架 。yaf,C扩展实现的高性能Web... 查看详情

第二章,第三章实验报告(代码片段)

...二、实验内容1、实验练习:实验2.3.3字符与ASCII码1问题的简单描述:从键盘输入一个大写字母,要求将其转换成小写字母并输出,同时输出这个小写字母相邻的两个字母,以及它们的ASCLL值。2实验代码:#include<stdio.h>main()inta... 查看详情

为啥我的 Haskell 代码与 Swift 和 C 相比如此缓慢 [重复]

...发布时间】:2018-12-2903:26:52【问题描述】:这是一个非常简单的Haskell代码,用于查找从1到200满足毕达哥拉斯定理X^2=Y^2+Z^2的所有毕达哥拉斯整数哈斯克尔: 查看详情

greenplum简单性能测试与分析

如今,多样的交易模式以及大众消费观念的改变使得数据库应用领域不断扩大,现代的大型分布式应用系统的数据膨胀也对数据库的海量数据处理能力和并行处理能力提出了更高的要求,如何在数据呈现海量扩张的同时提高处理... 查看详情

异常代码对 C++ 性能的影响? [关闭]

】异常代码对C++性能的影响?[关闭]【英文标题】:C++performanceimpactofcodewithexception?[closed]【发布时间】:2013-02-2407:46:38【问题描述】:如果我们删除所有带有错误返回值的try-catch的异常处理代码,代码执行会不会有持续的性能提... 查看详情

csapp实验四:性能优化实验(perflab)(代码片段)

...#xff0c;现来总结下各个实验,本文章为第四个实验——性能优化实验(Perflab)。一、实验名称:perflab二、实验学时:3三、实验内容和目的:    此次实验进行图像处理代码的优化。图像处理提供了许多能... 查看详情

vid与pvid的简单概述,附上一个有趣案例(代码片段)

重要前提,交换机内部的帧都是会打tag的PVID:port-basedvlanidpvid是交换机上的概念,说的是进入该端口的报文如果没有打vlanid就按pvid的值打上PVID是基于端口的VLANID,一个端口可以属于多个vlan(trunk口),但是只能有一个PVID(对trunk... 查看详情

不一样的角度一窥多线程

...简单的一段代码,当我用Windows的性能监测工具来监测每个处理器的使用率时,发现了一个有趣的现象.我电脑是四核的I7处理器,执行以上代码后,却只有处理器2一直处理一个比较高的占用率,而其他的三个则处于一个"摸鱼混日子"的状... 查看详情

水桶实验:牛顿与马赫(代码片段)

Newtonvs.Mach:TheBucketExperimentKathy老师讲述的有趣科学历史 01水桶实验一、背景介绍  It’sadebatethat’sragedformillenniawhichaspectsofourrealityareabsoluteandwhicharemerelyrelative.Whenitcomestotheconceptofmotiontwophysici 查看详情