iOS nonatomic,atomic效率测试—(yaoyao)

#import "ViewController.h"

#import <UIKit/UIKit.h>

#import <mach/mach_time.h>   //要使用统计程序执行时间的函数,必须导入的头文件

#import <Foundation/Foundation.h>

@interface ViewController ()

@property(nonatomic,copy) NSString *nonatomicTest;

@property(atomic,copy) NSString *atomicTest;

@end

@implementation ViewController

- (void)viewDidLoad {

[super viewDidLoad];

uint64_t start =  mach_absolute_time();

self.nonatomicTest = @"test";

uint64_t end   = mach_absolute_time();

NSLog(@"end - begin = %llu",end-start);

uint64_t start1 =  mach_absolute_time();

self.atomicTest = @"test";

uint64_t end1   = mach_absolute_time();

NSLog(@"end1 - begin1 = %llu",end1-start1);

//通过测试可以看出当声明为nonatomic,系统执行时能提高几倍的效率,所以在属性声明的时候,当该成员不会在多线程下访问时,尽量将它声明为为非原子性

}

时间: 2024-10-23 15:52:15

iOS nonatomic,atomic效率测试—(yaoyao)的相关文章

assign/copy/retain/strong/weak/readyonly/readwrite/nonatomic/atomic

arc其实并不是所谓的垃圾回收机制,其实arc只是编译器的一种特性,编译器会在编译阶段插入相应的内存管理代码,以实现自动的内存管理,这样就减少了因为程序员的一时疏忽或者项目过大而失误从而造成内存泄露,因为是编译器自动完成的代码插入所以arc的效率要高于垃圾回收机制. 在arc机制下dealloc中会由编译器自动插入释放属性的代码因此也不需要手动调用[super dealloc],当然arc只能管理foundation层的对象对于core foundation层的变量需要程序员手动去释放或者使用桥

关于@property()的那些属性及ARC简介【nonatomic,atomic,assign,retain,strong,weak,copy。】

@property()常用的属性有:nonatomic,atomic,assign,retain,strong,weak,copy. 其中atomic和nonatomic用来决定编译器生成的getter和setter是否为原子操作. NSObject对象的@property属性时,默认为atomic,提供多线程安全. 在多线程环境下,原子操作是必要的,否则有可能引起错误的结果.加了atomic,setter函数会变成下面这样: NSLock *_lock = [[NSLock alloc]ini

ORM for Net主流框架汇总与效率测试

框架已经被越来越多的人所关注与使用了,今天我们就来研究一下net方面的几个主流ORM框架,以及它们的效率测试(可能会有遗漏欢迎大家讨论). ORM框架:Object/Relation Mapping(对象/关系 映射)的缩写,易于理解的模型化数据的方法.简单的说就是把数据库的关系型数据类型转换为用对象型程序控制的框架类型. 今天研究的orm框架如下: 1.NHibernate(使用与介绍:http://www.cnblogs.com/stone_w/archive/2011/09/15/2177

sql语句的效率测试

1.测试sql语句执行时间的方法,获得时间差 declare @end_date datetime select @begin_date = getdate() --要执行的sql语句 select @end_date = getdate() select datediff(ms,@begin_date,@end_date) as '用时/毫秒' 2.下面这种方法比较全面,将执行每个语句时采取的步骤作为行集返回,通过层次结构树的形式展示出来,输出中包含的列: SET STATISTICS io

关于pgsql 几个操作符的效率测试比较

关于pgsql 几个操作符的效率测试比较1. json::->> 和 ->> 测试方法:单次运行100次,运行10个单次取平均时间.测试结果:->> 效率高 5% 左右 功能差异:json::->> 在使用前需要对对象转换为jsonb 然后再执行 ->> 操作,所以比->>更耗时 .所以如果我们需要对返回的对象进行jsonb操作,用jsonb_* 相关函数时,建议用jsonb_* 而不用 jsonb_*_text ,后者会把结果的js

【iOS】真机测试流程

1:进入苹果开发者平台 2:进入Member Center 3:输入开发者账号和密码 4:选择:Certificates, Identifiers & Profiles 5:选择Certificates 6:点击加号创建一个证书 证书分两种,Development开发证书,Production发布证书 测试的话使用发开证书 然后选择下一步 7:上传CSR文件 打开钥匙串 通过证书助理请求证书 填写对应信息,选择保存到本地即可 上传文件 创建完成 8:下载并安装证书 点击Download下载证书,

大数据量分页存储过程效率测试附代码

在项目中,我们经常遇到或用到分页,那么在大数据量(百万级以上)下,哪种分页算法效率最优呢?我们不妨用事实说话. 测试环境 硬件:CPU 酷睿双核T5750  内存:2G 软件:Windows server 2003    +   Sql server 2005 OK,我们首先创建一数据库:data_Test,并在此数据库中创建一表:tb_TestTable 按 Ctrl+C 复制代码1create database data_Test --创建数据库data_Test 2GO 3use data

IOS推送通知测试工具PushMeBaby

下载了PushMeBaby在xcode5里中不能使用,类库变了.需要添加Carbon.framework库,在引用的地方改成: #include <Carbon/Carbon.h>,程序就可以 运行了.测试时要变成自己的证书. 下载地址:点击打开链接 IOS推送通知测试工具PushMeBaby,码迷,mamicode.com

IOS AppStore上线前测试

IOS  AppStore上线前测试 TestFlight Beta https://developer.apple.com/library/ios/documentation/LanguagesUtilities/Conceptual/iTunesConnect_Guide_zh_CN/Chapters/BetaTestingTheApp.html#//apple_ref/doc/uid/TP40016325-CH35-SW2 如果是新 App,则为其创建 iTunes Connect 记录.