iOS-测试用例测试数组“firstObject“以及“lastObject“性能-by:nixs
发布时间:2023-04-01 13:57:17 所属栏目:教程 来源:
导读:在开发中数组可以说是最常用到的数据结构了,无论是存储对象还是获取沙盒目录数组中文件路径,会经常用到数组的两个对象方法: 即 [xx数组 firstObject] 和 [xx数组 lastObject].
譬如获取沙盒中cache文件夹路径
首
譬如获取沙盒中cache文件夹路径
首
|
在开发中数组可以说是最常用到的数据结构了,无论是存储对象还是获取沙盒目录数组中文件路径,会经常用到数组的两个对象方法: 即 [xx数组 firstObject] 和 [xx数组 lastObject]. 譬如获取沙盒中cache文件夹路径 首先自定义一个工具类 TestTool 声明如下方法 +(NSNumber *)firstNum; +(NSNumber *)lastNum; -(NSNumber *)firstNumber; -(NSNumber *)lastNumber; 并实现 +(NSNumber *)firstNum{ return [testNumbers firstObject]; } +(NSNumber *)lastNum{ return [testNumbers lastObject]; } -(NSNumber *)firstNumber{ return [testNumbers firstObject]; } -(NSNumber *)lastNumber{ return [testNumbers lastObject]; } 宏定义初始化数组 testNumbers0 下面使用测试用例分别使用 [testNumbers firstObject] 和 [testNumbers lastObject] 提取数组中第一个或最后一个元素 123 .为使结果更明显,同样使用for循环提取900000遍,查看耗时. 测试1.测试多数据数组差异 /// 类方法测试 [xx数组 firstObject] -(void)testPerformanceArrFirst_ClassMethod{ [self measureBlock:^{ for (int i = 0; i < 900000; i++) { NSNumber *lastNum = [TestTool firstNum]; } }]; // 多数据数组 - 五次结果分别: 3.517 3.403 3.475 3.516 3.571 平均:3.4964 } [xx数组 firstObject] : 一个存储多组数据的数组取首元素五次测试值平均耗时 3.4964 秒 /// 类方法测试 lastObject -(void)testPerformanceArrLast_ClassMethod{ [self measureBlock:^{ for (int i = 0; i < 900000; i++) { NSNumber *lastNum = [TestTool lastNum]; } }]; // 多数据数组 - 五次结果分别:3.342 3.282 3.357 3.318 3.359 平均:3.3316 } [xx数组 lastObject]: 一个存储多组数据的数组取首元素五次测试值平均耗时 3.3316 秒 明显在一个存储有200个数据左右的数组,使用 [xx数组 lastObject] 性能要优于 [xx数组 firstObject] 测试2.测试单数据数组差异 数组更改为: #define testNumbers @[@123] 1 将上述测试数组更换为只有一个数据的单数据数组, 这样无论[testNumbers0 lastObject] 性还是 [xx数组 firstObject] 取得都是同一个数据,测试两个类方法性能差异 /// 类方法测试 [xx数组 firstObject] -(void)testPerformanceArrFirst_ClassMethod{ [self measureBlock:^{ for (int i = 0; i < 900000; i++) { NSNumber *lastNum = [TestTool firstNum]; } }]; // 单数据数组 - 五次结果分别: 0.198 0.200 0.201 0.201 0.208 平均:0.2016 } [xx数组 firstObject] : 一个存储单一数据的数组取首元素五次测试值平均耗时 0.2016 秒 /// 类方法测试 lastObject -(void)testPerformanceArrLast_ClassMethod{ [self measureBlock:^{ for (int i = 0; i < 900000; i++) { NSNumber *lastNum = [TestTool lastNum]; } }]; // 单数据数组 - 五次结果分别:0.197 0.195 0.206 0.194 0.197 平均:0.1978 } [xx数组 lastObject]: 一个存储单一数据的数组取首元素五次测试值平均耗时 0.1978 秒 明显在一个存储有1个数据左右的数组,使用 [xx数组 lastObject] 性能同样也要优于 [xx数组 firstObject] 测试3. 类方法性能和对象方法性能差异 众所周知声明一个类,在类中声明方法可以声明类方法和对象方法, 倘若方法中不会使用类中成员变量和属性,一般建议将方法声明为类方法,因为相同的算法类方法性能要优于对象方法.下面对上述结论进行测试,毕竟耳听为虚. 下面在类方法和对象方法中同样执行 对相同数组(1数据数组) 进行相同 [xx数组 lastObject] 算法 即对比如下两方法 +(NSNumber *)lastNum{ return [testNumbers lastObject]; } -(NSNumber *)lastNumber{ return [testNumbers lastObject]; } 测试用例进行测试 /// 类方法测试 lastObject -(void)testPerformanceArrLast_ClassMethod{ [self measureBlock:^{ for (int i = 0; i < 900000; i++) { NSNumber *lastNum = [TestTool lastNum]; } }]; // 单数据数组 - 五次结果分别:0.197 0.195 0.206 0.194 0.197 平均:0.1978 } /// 对象方法测试 lastObject -(void)testPerformanceArrLast_ObjectMethod{ [self measureBlock:^{ for (int i = 0; i < 900000; i++) { TestTool *tool = [[TestTool alloc] init]; NSNumber *lastNum = [tool lastNumber]; } }]; // 单数据数组 - 五次结果分别: 0.333 0.333 0.349 0.350 0.331 平均:0.3392 } 明显类方法性能明显优于对象方法 (编辑:汽车网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
