iOS下的原型模式与非原型模式的效率比较
来源:互联网 发布:youtube dl mac 编辑:程序博客网 时间:2024/05/17 03:47
iOS下的原型模式与非原型模式的效率比较
直接上代码:
// 数据模型
#import <Foundation/Foundation.h>@interface DataModel : NSObject <NSMutableCopying>@property (nonatomic,strong) NSString *name;@property (nonatomic,strong) NSDate *date;@property (nonatomic,assign) BOOL sex;@property (nonatomic,assign) NSInteger age;@end
#import "DataModel.h"@implementation DataModel- (id)mutableCopyWithZone:(NSZone *)zone { DataModel *model = [[[self class]allocWithZone:zone]init]; model.name = [_name copy]; model.date = [_date copy]; model.age = _age; model.sex = _sex; return model;}@end
// 调用的地方
<pre name="code" class="objc">#import <Foundation/Foundation.h>#import "DataModel.h"@interface Prototype : NSObject// 原型模式测试例子+ (void)prototypeTest:(id)object;@end
#import "Prototype.h"@implementation Prototype// 原型模式测试例子+ (void)prototypeTest:(id)object { // 数据模型 DataModel *model = [[DataModel alloc]init]; // 填充模型数据 model.name = @"Jony"; model.age = 23; model.date = [NSDate date]; // 开启对比情况选择标志 int flag = 1; // 1 表示原型模式 非表示非原型模式 if(flag){ // 循环体中使用原型模式,实现深拷贝 for (int i = 0; i< 10001; i++) { if(i==0) NSLog(@"%@",[NSDate date]); DataModel *mod = [model mutableCopy]; mod.name = @"Frandkly"; mod.date = [NSDate dateWithTimeIntervalSince1970:235325325]; mod.sex = 0; mod.age = 78; NSLog(@"%@,",mod.name); if (i == 10000) { NSLog(@"原型模式"); NSLog(@"%@",[NSDate date]); } } } else { for (int i = 0; i<10001; i++) { if(i==0) NSLog(@"%@",[NSDate date]); DataModel *mod = [[DataModel alloc]init] ; mod.name = @"Frandkly"; mod.date = [NSDate dateWithTimeIntervalSince1970:235325325]; mod.sex = 0; mod.age = 78; NSLog(@"%@,",mod.name); if (i == 10000) { NSLog(@"一般alloc"); NSLog(@"%@",[NSDate date]); } } }}@end
测试结果:
原型模式下:
02:55:14.326 DesignPatter_Prototype[1761:46308] Frandkly,
02:55:25.321 DesignPatter_Prototype[1761:46308] Frandkly,
非原型模式下:
02:56:59.804 DesignPatter_Prototype[1800:47397] Frandkly,
02:57:13.753 DesignPatter_Prototype[1800:47397] Frandkly,
结果分析:
效率差距不是很大,在一万条数据的情况下差距是2到3秒,对于一般的百条以内,属性值不是很多的话,应该差距不大,当然,还是以实际的使用情况分析,我在此只是简单的对比。有错误的地方,请指正。
1 0
- iOS下的原型模式与非原型模式的效率比较
- Java的原型模式
- java的原型模式
- js的原型模式
- JavaScript的原型模式
- 面向对象与原型【37】---原型的弊端(组合构造模式+原型模式)
- 带原型管理器的原型模式
- 原型管理器--对象的克隆--原型模式
- 设计模式 原型模式与C++ & 设计模式的思考
- iOS设计模式的学习记录 (2) --- 原型模式
- iOS设计模式-原型
- 原型模式【下】
- iOS与java原型设计模式对比
- JS原型模式的优势
- 原型模式的简单例子
- JavaScript 原型模式的理解
- JAVA 原型模式的实现
- 原型模式的使用分析
- jQuery源码分析15--迭代器
- Js 事件
- IIS HTTP 错误 404.17 - Not Found 解决方法
- 所有递归都可以改写成循环吗?
- null和''的区别
- iOS下的原型模式与非原型模式的效率比较
- 【JAVA】apache poi excel 文件读取,各种数据类型,不规则excel格式都可以读取
- Server.UrlEncode与HttpUtility.UrlEncode的区别有哪些
- Android TextureView简易教程
- Eclipse 调试 时, 无论在activity中哪一行打断点。调试时,都不会跳转到activity源码中。报错 source not found 。
- [读书笔记]JAVA异常学习
- Cenos 6.6 虚拟机与本地主机 使用NAT方式 通信
- Android Studio代码自动提示无效(not available in Power Save mode)
- 细谈php mysql数据库连接操作