之前看到一篇关于adapter的文章用到了SparseArray,所以在这里写写关于SparseArray的使用方法. SparseArray是官方针对安卓所写的容器,与HashMap类似,只是性能比HashMap好. SparseArray实现了Cloneable接口,还能够调用clone方法. 首先看看SparseArray的使用方法: 构造: SparseArray的构造与我们用惯的HashMap,ArrayList一样也是new出一个实例然后使用. SparseArray<E> sa=…
转载:https://liuzhichao.com/p/832.html HashMap是java里比较常用的一个集合类,我比较习惯用来缓存一些处理后的结果.最近在做一个Android项目,在代码中定义这样一个变量,实例化时,Eclipse却给出了一个 performance 警告. sparsearray 意思就是说用SparseArray <E> 来替代,以获取更好性能.老实说,对SparseArray并不熟悉,第一感觉应该是Android提供的一个类.按住Ctrl点击进入SparseAr…
在Android开发时,我们使用的大部分都是Java的api,比方HashMap这个api,使用率非常高,可是对于Android这样的对内存非常敏感的移动平台,非常多时候使用一些java的api并不能达到更好的性能,相反反而更消耗内存,所以针对Android这样的移动平台,也推出了更符合自己的api,比方SparseArray.ArrayMap用来取代HashMap在有些情况下能带来更好的性能提升. 介绍它们之前先来介绍一下HashMap的内部存储结构.就明确为什么推荐使用SparseArray…
HashMap是java里比较常用的一个集合类,我比较习惯用来缓存一些处理后的结果.最近在做一个Android项目,在代码中定义这样一个变量,实例化时,Eclipse却给出了一个 performance 警告. 意思就是说用SparseArray<E>来替代,以获取更好性能.老实说,对SparseArray并不熟悉,第一感觉应该是Android提供的一个类.按住Ctrl点击进入SparseArray的源码,果不其然,确定是Android提供的一个工具类. 单纯从字面上来理解,SparseArr…
由于网上有朋友对于这个问题已经有了很详细的研究,所以我就不班门弄斧了: 转载于:http://android-performance.com/android/2014/02/10/android-sparsearray-vs-hashmap.html http://liuzhichao.com/p/832.html http://www.codes51.com/article/detail_163576.html 源码: /* * Copyright (C) 2006 The Android O…
HashMap是java里比较常用的一个集合类,我比较习惯用来缓存一些处理后的结果.最近在做一个Android项目,在代码中定义这样一个变量,实例化时,Eclipse却给出了一个 performance 警告. 意思就是说用SparseArray<E>来替代,以获取更好性能.老实说,对SparseArray并不熟悉,第一感觉应该是Android提供的一个类.按住Ctrl点击进入SparseArray的源码,果不其然,确定是Android提供的一个工具类. 单纯从字面上来理解,SparseArr…
SparseArray是 Android框架独有的类,在标准的JDK中不存在这个类.它要比 HashMap 节省内存,某些情况下比HashMap性能更好,按照官方问答的解释,主要是因为SparseArray不需要对key和value进行auto- boxing(将原始类型封装为对象类型,比如把int类型封装成Integer类型),结构比HashMap简单(SparseArray内部主要使用 两个一维数组来保存数据,一个用来存key,一个用来存value)不需要额外的额外的数据结构(主要是针对Ha…
源作者:Android小Y链接:https://www.jianshu.com/p/1828f14d7955来源:简书 前言 Android开发中,一个好的应用,除了要有吸引人的功能和交互之外,在性能上也应该有高的要求,如果单单实现页面和业务功能只是完成了基本任务,Android系统对内存要求也是非常高的,稍不注意,就会发生某个页面绘制突然发生卡顿甚至OOM,这对产品的用户体验都是致命性的打击,这就需要我们在日常开发中注意性能方面的优化. 正文 Android开发中经常会使用一些数据结构来存储内…
HashMap是java里比较常用的一个集合类,我比较习惯用来缓存一些处理后的结果.最近在做一个Android项目,在代码中定义这样一个变量,实例化时,Eclipse却给出了一个 performance 警告. 意思就是说用SparseArray<E>来替代,以获取更好性能.老实说,对SparseArray并不熟悉,第一感觉应该是Android提供的一个类.按住Ctrl点击进入SparseArray的源码,果不其然,确定是Android提供的一个工具类. 单纯从字面上来理解,SparseArr…
SparseArray是android里为<Interger,Object>这样的Hashmap而专门写的class,目的是提高效率,其核心是折半查找函数(binarySearch) private static int binarySearch(int[] a, int start, int len, int key) { int high = start + len, low = start - 1, guess; while (high - low > 1) { guess = (…
SparseArray是android里为<Interger,Object>这样的Hashmap而专门写的class,目的是提高效率,其核心是折半查找函数(binarySearch). private static int binarySearch(int[] a, int start, int len, int key) { int high = start + len, low = start - 1, guess; while (high - low > 1) { guess = …
相信大家都明白,手机软件的开发不同于PC软件的开发,因为手机性能相对有限,内存也有限,所谓“寸土寸金”,可能稍有不慎,就会导致性能的明显降低.Android为了方便开发者,特意在android.util这个包中提供了几个提高效率的工具类,比如之前用过的LruCache类,这次我们来谈谈其他工具类,SparseArray,SparseBooleanArray和 SparseIntArray. 总体说,它们都是类似map这样key-value的存储方式,但是由于查找的算法不一样.因此效率也各不同.但…
Ionic2开发环境搭建.项目创建调试与Android应用的打包.优化. windows下ionic2开发环境配置步骤如下: 下载node.js环境,稳定版本:v6.9.5 下载android studio: android-studio-bundle-145.3360264-windows.exe包含 Android SDK,打开出现问题进行如下操作: 到控制台安装ionic2和Cordova 首先更换淘宝镜像,下载起来会快很多,使用时需要将npm命令换成cnpm npm install -g…
SparseArray是android提供的一个工具类,它可以用来替代hashmap进行对象的存储,其内部实现了一个矩阵压缩算法,很适合存储稀疏矩阵的. PS:support包中还提供了兼容的类SparseArrayCompat不知道是干什么的. 针对源码的详细分析:http://stormzhang.com/android/2013/08/01/android-use-sparsearray-for-performance-optimization/ 一.和Hashmap的对比 既然andro…
HashMap是一个高效通用的数据结构,它在每一个Java程序中都随处可见.先来介绍些基础知识.你可能也知 道,HashMap使用key的hashCode()和equals()方法来将值划分到不同的桶里.桶的数量通常要比map中的记录的数量要稍大,这样 每个桶包括的值会比较少(最好是一个).当通过key进行查找时,我们可以在常数时间内迅速定位到某个桶(使用hashCode()对桶的数量进行取模) 以及要找的对象. 这些东西你应该都已经知道了.你可能还知道哈希碰撞会对hashMap的性能带来灾难性…
旅程7:增加弹性和优化性能 到达旅程的终点:最后的任务. "你不能飞的像一只长着鹪鹩翅膀的老鹰那样."亨利·哈德逊 我们旅程的最后阶段的三个主要目标是使系统对故障更具弹性,提高UI的响应能力,并确保我们的设计是可伸缩的.加强系统的工作主要集中在订单和注册限界上下文中的RegistrationProcessManager类.性能改进工作的重点是当订单创建时UI与领域域模型的交互方式. 本章的工作术语定义: 本章使用了一些术语,我们将在下面进行描述.有关更多细节和可能的替代定义,请参阅参考…
[经验] Win7减肥攻略(删文件不删功能.简化优化系统不简优化性能) ☆心梦无痕☆ 发表于 2014-1-24 11:15:04 https://www.itsk.com/thread-316471-1-11.html [经验] Win7减肥攻略(删文件不删功能.简化优化系统不简优化性能) 首先 开启Administrator 用户 删除其他用户! 1.删除休眠文件 “以管理员身份运行,所有程序→附件→命令提示符”,右击选择“以管理员身份运行”,进入命令提示符后,手工输入“powercfg-h…
我们在native与网页相结合开发的过程中,难免会遇到关于WebView一些共通的问题.就我目前开发过程中遇到的问题以及最后得到的优化方案都将在这里列举出来.有些是老生常谈,有些则是个人摸索得出解决方法.下面就是整理得到的些干货. 1.加快HTML网页装载完成的速度 默认情况html代码下载到WebView后,webkit开始解析网页各个节点,发现有外部样式文件或者外部脚本文件时,会异步发起网络请求下载文件,但如果在这之前也有解析到image节点,那势必也会发起网络请求下载相应的图片.在网络情况…
Concurrency Visualizer: https://msdn.microsoft.com/en-us/library/dd537632.aspx?f=255&MSPPError=-2147217396 利用 Visual Studio 2010 中的 Concurrency Visualizer 优化性能: https://msdn.microsoft.com/zh-cn/magazine/ee336027.aspx Parallel.For翻船事件剖析-使用Concurrency…
使用说明 *************************************************** Android APP 启动黑屏优化补丁 作者: Swish, YangYxd 2016.01.16 Version: 1.0.0 QDAC官方群: 250530692 *************************************************** [安装方式] 双击Setup.bat安装补丁文件(安装时会作备份) 双击Uninstall.bat可以恢复. […
android网络交互之DNS优化知识整理 之前的工作中,经常会遇到DNS解析出问题导致网络交互的操作无法正常进行. UnknownHostException 在很多的移动开发过程中,与服务端的交互的url通常是包含域名的.而在实际的网络交互的过程中,第一步就需要对域名进行dns解析. 复杂的网络环境里面,dns解析会耗费很长的时间.甚至是解析失败.这是经常会发生的. 所以这一步的优化是非常至关重要的. 有那么一种方案叫:IP直连 就是在网络交互的过程中,跳过域名的DNS解析,直接用IP进行网络…
Python使用的(Garbage Collection, GC)机制是引用计数(Reference Count),其原理是为每一个内存对象进行引用计数,因此当有大量的对象新建或删除时,必须要进行大量修改引用计数的操作,影响了程序的性能.为避免这种情况的发生,可以在大量的对象新建或删除之前,把GC禁用了,这些操作结束以后,再恢复GC.代码如下: import gc gc.disable() ... gc.enable() 这样就可以优化性能,提高程序的运行速度.…
创建cell的步骤 1.新建一个继承自UITabelViewCell的类 2.重写 initWithStyle:ReuseIdentifier: 方法 添加所有需要显示的子控件(不需要设置子控件的数据和frame,子控件要添加到contentView中) 进行子控件一次性的属性设置(有些属性中需要设置一次,比如字体\固定的图片) 3.提供2个模型 数据模型:存放文字数据\图片数据 frame模型:存放数据模型\所有子控件的frame\cell的高度(可优化性能) 4.cell拥有一个frame模…
转自:http://blog.csdn.net/feixianxxx/article/details/5524819     SQL Server 优化性能的几个方面 (一).数据库的设计 可以参看最近论坛上出现一个精华帖http://topic.csdn.net/u/20100415/10/a377d835-acbd-4815-8bcb-b367f88ac8b5.html?92227   数据库设计包含物理设计和逻辑设计:   物理设计上可以通过使用RAID硬件架构.   简单说下使用策略:a…
在竞争激烈的游戏行业中,尤其页游,面对策划复杂和频繁的需求,使用脚本能够减少难度和成本.在使用Lua的过程中,会常常訪问全局变量来作为配置文件. 在訪问全局变量时,能够通过局部变量引用全局变量来优化.当然,这种优化毫无意义. Locals Vs Globals  from  http://lua-users.org/wiki/LocalsVsGlobals Comparison between local and global variables: Implementation: Locals…
出处:  MySQL优化 - 性能分析与查询优化 优化应贯穿整个产品开发周期中,比如编写复杂SQL时查看执行计划,安装MySQL服务器时尽量合理配置(见过太多完全使用默认配置安装的情况),根据应用负载选择合理的硬件配置等. 1.性能分析 性能分析包含多方面:CPU.Memory.磁盘/网络IO.MySQL服务器本身等. 1.1 操作系统分析 常规的操作系统分析,在Linux中通常包含一些性能监控命令,如top.vmstat.iostat.strace.iptraf等. 1.内存:内存是大项,高查…
Unity3D研究院之使用Android的硬件缩放技术优化执行效率 http://www.xuanyusong.com/archives/3205 Android中GLSurfaceView在横竖屏切换时重新创建表面缓冲导致的问题 http://blog.k-res.net/archives/1702.html https://stackoverflow.com/questions/7185644/android-opengl-crazy-aspect-ratio-after-sleep…
可能有些人不明白什么是过度绘制,简单言,我们app一个页面所显示的效果是由像素一帧一帧绘制而成.过度绘制就是意味着这一帧被绘制多次.如果是静态的布局,可能影响不是很大,如果是动态的,比如ListView,GridView,ViewPager等在性能上就会差一点,常见的比如listView上下滑动,过度绘制的情况下,就会出现卡顿,或者跳跃感很明显. 当然过度绘制肯定无法避免,我们只能减少不必要的绘制,那么如何看的出来,一个页面是否过度绘制呢? 下面我们来看一下,下面说的这个工具只有Android…
当需要对两个集合进行相互操作的时候,一般需要进行双层For循环,但我们知道双层For在数量越大的时候性能影响越大 这时候我们会想到的其中一种解决方法就是利用Hashmap在查找数据的高效上来优化双层For 我利用下面的代码来模拟测试两种情况的性能: public static void main(String[] args) { for (int i = 0; i < 10000; i += 10) { List<String> loopList1 = getLoopList(i); L…
前言 现在都在谈性能优化或者在面试的时候被问到性能优化相关问题,那么我们为什么要做性能优化呢?以及性能优化的难点是什么?在整个项目周期中不同的阶段该做什么?优化效果如何长期保持?作为一名Android高级工程师或者架构师,我们看待问题的角度不能单一而是要学会从多个维度来仔细考量 ,这样才能更全面的认识以及解决问题!下文会从多个视角来学习性能优化工作当中 我们可能会遇到哪些难题! 性能优化有哪些难题 难点一:性能表现差 性能优化的第一个难题是APP的自身性能表现差,这是从APP自身性能使用来说的:…