iOS 判断一断代码的执行时间(从网上看的,自己实现一下)

//创建一个.h 文件

// Method.h

#ifndef NonAtomicTest_Method_h

#define NonAtomicTest_Method_h

#import <mach/mach_time.h>

//c函数实现  返回值类型 函数名  函数参数(是一个block)

CGFloat BNRTimeBlock (void (^block)(void)) {

mach_timebase_info_data_t info;

if (mach_timebase_info(&info) != KERN_SUCCESS) return -1.0;

uint64_t start = mach_absolute_time ();

block ();

uint64_t end = mach_absolute_time ();

uint64_t elapsed = end - start;

uint64_t nanos = elapsed * info.numer / info.denom;

return (CGFloat)nanos / NSEC_PER_SEC;

} // BNRTimeBlock

#endif

//直接使用

#import "ViewController.h"

#import "Method.h"           //引用头文件即可调用 BNRTimeBlock

#define LOOPAGE 10000000

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {

[super viewDidLoad];

[self test];

}

-(void)test {

CGFloat time;

NSString *thing1 = @"hi";

NSString *thing2 = @"hello there";

//block 的实现

time = BNRTimeBlock(^{

for (int i = 0; i < LOOPAGE; i++) {

[thing1 isEqual: thing2];

}

});

NSLog (@"isEqual: time: %f\n", time);

time = BNRTimeBlock(^{

for (int i = 0; i < LOOPAGE; i++) {

[thing1 isEqualToString: thing2];

}

});

NSLog(@"isEqualToString: time: %f\n", time);

}

@end

控制台输出:

NonAtomicTest[3114:126739] isEqual: time: 0.279763

NonAtomicTest[3114:126739] isEqualToString: time: 0.275132

时间: 2024-08-05 14:48:40

iOS 判断一断代码的执行时间(从网上看的,自己实现一下)的相关文章

iOS开发中的那些的约定俗成(1)————《编写高质量iOS与OS X代码的52个有效方法》读书笔记(第一章)

iOS开发中的那些的约定俗成(1) ----<编写高质量iOS与OS X代码的52个有效方法>读书笔记(第一章) 前言 "我要成为一个高产的开发人员.""想要混的好,就得多努力." 写这些东西是因为毕竟看了书,但是看书看过去之后,也许印象不是很深刻,有些东西现在也理解不了,那我就把我理解的,现在就可以用到的东西,简单的写出来就好,让自己今后看到就能明白其中的意思. 还有就是锻炼一下表达,编辑能力,慢慢的提升自己,随时随地的都要有一个锻炼的心. 最后当然就

读书笔记:《梦断代码Dreaming in Code》

读书笔记:<梦断代码Dreaming in Code> 拿到<梦断代码>书后,一口气翻了一遍,然后又用了3天时间仔细读了一遍,也不禁掩卷长叹一声,做软件难.虽难,仍要继续走下去,可以把软件的范围限制得小一些,用敏捷方法等过程会使软件失败的风险小一些,毕竟我们还没有写书上所说的那样的大型软件. 第0章 软件时间 一开始看到第0章并没有感觉多么奇怪,可能程序员的思维方式已经固化在大脑中了,但读到作者关于第0章无意搞笑时,也不禁哑然失笑,为什么程序员要 从0开始计数?因为计算机从0开始计

iOS判断判断设备类型信息

一.iOS判断判断设备机型 http://www.jianshu.com/p/591765b70ca5 1.导入 #import <sys/utsname.h> 2.代码 struct utsname systemInfo2; uname(&systemInfo2); NSString *platform = [NSString stringWithCString:systemInfo2.machine encoding:NSASCIIStringEncoding];

《梦断代码》读书笔记 第2篇

<梦断代码>读书笔记 第2篇 第7章:细节视图 第8章:白板上的即时贴 第9章:方法 第10章:工程师和艺术家 第11章:通往狗食版之路 “读书时我喜欢上数学课——这类东西之所以能吸引我,是因为我知道自己做对了.”在书里面我找到了自己刚接触计算机时不喜欢编程可能的原因:我不知道自己是否做对了,也没有很顺利就做对的时候,慢慢地导致排斥编程,特别是一点思路也没有,或者知道这个程序将会花费我很多时间时情绪很糟糕,所以它不能吸引我.到现在,每次找到程序中不对的地方再修改正确,即使消耗很多时间,也会有一

IOS判断文件类型

IOS判断文件类型 2013-11-06 13:14 929人阅读 评论(0) 收藏 举报 最近在做的东西有下载zip,只是服务器发送过来的是二进制,需要根据二进制来判断是什么类型的文件,从而进行保存操作.起初很不理解,到后来发现可以通过二进制的前2位的ascii码来进行判断.如下: // 255216 jpg;        // 7173 gif;        // 6677 bmp,        // 13780 png;        // 6787 swf        // 77

梦断代码阅读笔记01

大致浏览了一下<梦断代码>这本书,觉得还是挺感兴趣的.第一章软件时间,作者以一名程序员的身份自述,故事性很强,读起来不会感觉枯燥.在第一章中作者认为程序员与其他人的不同之处在于他们从一开始,而我们从零开始,想来也正是如此,他谈了软件的发展历程以及过程中好多伟大的研究者为其发展而做的贡献,这个行业也是很多前辈付出了诸多努力才推出来的,所以需要我们付出更多的努力去发展他. 第二章中作者讲到我们做任务需要蓝图,也就是需要有计划,提前计划好,按计划来做任务,这样对于碰到一些问题才不至于举手无措,另外在

iOS_SN_BlueTooth (二)iOS 连接外设的代码实现

原文:http://www.cocoachina.com/ios/20150917/13456.html?utm_source=tuicool&utm_medium=referral 上一篇文章介绍了蓝牙的技术知识,这里我们具体说明一下中心模式的应用场景.主设备(手机去扫描连接外设,发现外设服务和属性,操作服务和属性的应用.一般来说,外设(蓝牙设备,比如智能手环之类的东西),会由硬件工程师开发好,并定义好设备提供的服务,每个服务对于的特征,每个特征的属性(只读,只写,通知等等),本文例子的业务场

梦断代码 阅读计划

这学期要学习软件工程这门课,老师给我们推荐了很多和软件工程相关的书籍,并建议我们在本学期内阅读不少于3本,所以我打算从现在开始到清明节放假这一个月内读完第一本书--<梦断代码> 时间安排   第一周:0.1.2章: 第二周:3.4.5章: 第三周:6.7.8章: 第四周:9.10.11章:

读《梦断代码》第0章有感

今天我读了<梦断代码>的第0章,对编写软件又有了新的认识.知道软件虽然能带给我们许多新鲜的.意想不到的功能,但是却也是不确定,不是像建一座桥那样,可以按部就班,一步一步实施的. 首先吸引我注意的就是第0章,开始我还以为写错了,后来通过读书才知道,原来是作者故意这么写的,而他这么写的目的就是要提醒我们:程序员计数从0开始,而不是从1开始.这是因为计算机采用的是二进制.首先作者通过一个游戏Sumer的例子,吸引我们的兴趣.其实意在告诉我们,编程兴趣是最好的老师,当你真正对编程感兴趣的时候,那么你才