在本章,你将学到下面这些内容:

  • 模拟器和真机测试环境的不同。

  • 内存管理是如何影响一个app的性能。

  • 检测app的工具和技术包括:

    1)基本的测试内存和性能的工具。

    2)测试内存管理方面比较复杂的工具,比如内存泄露和bad access。

    3)测试计算过程中性能方面比较复杂的工具,比如电池,文件加载,显示信息等。

  • 如何把你的程序分割成更小的部分,这样能够更简单的定位性能的瓶颈。

为了提升性能,你需要非常小心的运行测试来查看问题出现在哪里。为了执行一个有用的测试,你需要知道程序或代码段可能运行慢的原因。

在一开始,你应该注意两种基本的选择:模拟器和真机环境,内存优化和性能优化之间的平衡。

首先,你需要知道模拟器和真机环境的不同。

模拟器和真机

iPhone应用性能的主要问题是他们运行在一个受限的,处理慢的环境中。iPhone模拟器开发环境比真机环境要更快;事实上,模拟器的环境跟在mac机器上运行它一样快。

因此,你可能会非常的惊讶,当你的程序在模拟器上运行比较快,而在真机上比较慢。我观察到很多人抱怨在手机网络上应用比较慢。在某些情况下确实如此。但是,在很多情况下app的性能可能会下降很多,由于代码实现本身,而不是网络的问题。因此,用基本的工具何标准环境仔细的测试你的app,会使得你的app在性能和用户体验上更加自信。

为了演示模拟器和真机的不同,我在模拟器和真机上测试了一个程序,结果让人吃惊。

  • 在模拟器上花了0.5秒完成了主要的计算。

  • 在真机上同样的计算花了7秒。

程序很简单:我用两个数组中进行一个简单的测试,每个数组有1000个元素。然后,代码循环这两个数组,发现两个数相同就打印“hello”。在真实环境中,你可能不需要在一个数组中处理1000个元素或你可能不会选择循环一个数组来找到相同的数。但是,这不是重点。我主要是为了演示真机比模拟器运行慢的多。

这引出了我在本书中将会多次提到的一个非常重要的点:你总是需要在模拟器和真机上同时测试。那为什么不只是在真机上测试呢?因为模拟器有以下优点:

  • 在模拟器上运行比较快,这意味着可以减少开发者被耽误的时间。

  • 比较好测试内存泄露和内存分配问题。

内存和性能

内存和性能是不同的。内存通常是指随机存储器,它代表了你使用了多少存储空间,以及你还剩多少存储空间。性能是指你运行一个指定的功能你的app有多快。

内存可能会对性能产生巨大的影响。当你的设备有更多的RAM和更多的存储空间,你可以预加载和缓存更多的数据。相比文件存储和网络,RAM访问是非常快的。通过在RAM上预加载和缓存更多的数据,在很多情况下你可以显著的提升你的程序性能。例如,如果你的app是一个游戏,需要加载很多图片,你可以在必要的时候预加载和显示他们。从RAM中加载比从文件中加载要快10倍。

但是,内存使用好并不意味着性能就好。有一些app不需要使用很多内存;因此,如果你只是优化内存,性能可能并不会提升。反之就不好了:一个app为了达到一个比较好的性能而使用了所有的内存,很快app就会把内存耗尽。

因此,你应该总是要对内存和运行时性能进行仔细的测试,确保在内存使用和运行时性能有一个好的权衡。

转载于:https://blog.51cto.com/ikinglai/1263879

使用工具检测你的app:模拟器和真机测试 之一相关推荐

  1. app测试模拟器和真机区别

    转载1: 平时测试过程中,经常有组内同学们问,使用模拟器测试完之后,是否可以代替真机的兼容测试了. 先来看看模拟器和真机的直观区别: 多点触摸(比如两个手指放大文本字体大小) 网络通话(没有真实的呼入 ...

  2. 制作模拟器和真机通用静态库

    通常在项目中使用静态库的时候都会有两个版本,一个用于模拟器,一个用于真机,因为Mac和iPhone的CPU不同,才造成了这种情况. 为了模拟器与真机之间切换调试的方便,制作通用版本非常有必要. 现在有 ...

  3. Appium移动端自动化测试--搭建模拟器和真机环境一

    目录 模拟器--安装Android Studio及Android SDK 模拟器--更改VDM默认存储路径 真机(Android)环境设置 真机--开启开发者模式 真机-- 打开USB调试 真机连接- ...

  4. 移动端自动化测试appium(6)--搭建模拟器和真机环境

    模拟器–安装Android Studio及Android SDK 推荐直接安装Android Studio,然后使用Android Studio安装SDK. 启动SDK Manager,安装自己所需要 ...

  5. Android识别模拟器,判断是模拟器还是真机

    文章目录 前言 原理 禁止模拟器安装apk 代码识别 验证 最后 前言 对于android开发者来说,模拟器是开发工具,但是对用户来说,可能就是薅羊毛.找漏洞的赚钱工具. 不管是活动风控还是内容保护等 ...

  6. 【为什么要用真机】——谈模拟器与真机的差别

    今天语音对话应用调试时要用两台手机,无奈模拟器打开不了app.网上查阅资料,发现我的问题应该是模拟器无法获取语音权限导致的.感觉这篇文章比较全面,分享给大家参考,同时也建议大家尽量用真机测试.转载地址 ...

  7. Android判断模拟器还是真机的方法

    作为一个App,我们在做推广的同时,肯定会担心刷量的问题.一般常见的刷量手段就是通过安卓模拟器进行刷量. 那就会想到,怎么判断一个设备是模拟器还是真机. 先吐槽一下,百度上搜出来的都是什么垃圾答案.各 ...

  8. Android 判断模拟器还是真机的方法

    作为一个App,我们在做推广的同时,肯定会担心刷量的问题.一般常见的刷量手段就是通过安卓模拟器进行刷量. 那就会想到,怎么判断一个设备是模拟器还是真机. 先吐槽一下,百度上搜出来的都是什么垃圾答案.各 ...

  9. Android开发,关于模拟器通知显示正常,真机测试真机通知无效问题

    最近,小白弄一个通知,模拟器上通知显示还是正常的,但真机测试就出现通知不显示的问题,并且也不报错,嘿,可给它牛坏了. 百度半天也没解决问题,然后就在真机的应用权限设置里发现,原来通知权限是默认关闭的, ...

最新文章

  1. 8. 进制转化的函数
  2. MFC版本链表演示程序
  3. ORACLE TO_CHAR的一个问题
  4. 一、项目管理框架【PMP 】
  5. java iterator_Java ArrayDeque iterator()方法与示例
  6. 城市大轰炸(洛谷P1830题题解,Java语言描述)
  7. Python爬虫利器 ——代码转换
  8. linux数组fortran,[转载]FORTRAN中数组的定义及使用
  9. NCBI获取指定区域基因序列及其引物设计
  10. 【机器人学】机器人运动学基础
  11. 解决 前端Failed to decode downloaded font
  12. CAD文字快速添加框
  13. 堆排序(Heapsort)-全网最详细
  14. Alibaba(实习准备)—SOFARPC学习总结
  15. 考研复试(控制工程专硕)及大学本科(物联网工程)知识点回顾(三)——模拟电子技术
  16. Android 画中画模式
  17. 启动nginx报错/usr/local/nginx/sbin/nginx: error while loading shared libraries: libpcre.so.1: cannot ope
  18. strm().filter().collect()和stream().map().collect()的作用
  19. 期末复习测试大题浅析(吐槽)
  20. 电商项目商品详情页架构设计

热门文章

  1. 代码随想录1刷—贪心算法篇(二)
  2. java线程与操作系统其他线程共享时间片_Java多线程(一)
  3. 直面恐惧,战胜自我~
  4. Linux系统安装腾讯会议
  5. 35、连通测试和路由跟踪
  6. 用计算机生成或打印的动火工作票应,用计算机生成或打印的动火工作票应使用统一的票面格式,由工作票签发人审核无误,且必须手工签名后方可执行。...
  7. 《LPC入门笔记》之LPC系列单片机低功耗概述
  8. 2020低压电工实操考试视频及低压电工考试试题
  9. proc文件系统介绍以及常见使用方法
  10. 无监督聚类 -- Kmeans