5.1 Linux内存子系统 在诊断内存性能问题的时候,也许有必要观察应用程序在内存子系统的不同层次上是怎样执行的.在顶层,操作系统决定如何利用交换内存和物理内存.它决定应用程序的哪一块地址空间将被放到物理内存中,即所谓的驻留集.不属于驻留集却又被应用程序使用的其他内存将被交换到磁盘.由应用程序决定向操作系统请求多少内存,即所谓的虚拟集. 当应用程序使用物理内存时,它首先与CPU的高速缓存子系统交换.现代CPU有多级高速缓存.最快的高速缓存离CPU最近(L1),其容量也是最小的.举个例子,假设C…
7.1 网络I/O介绍 Linux和其他主流操作系统中的网络流量被抽象为一系列的硬件和软件层次. 链路层,也就是最低的一层,包含网络硬件,如以太网设备.在传送网络流量时,这一层并不区分流量类型,而仅仅以尽可能快的速度发送和接收数据(帧). 链路层上面是网络层.这一层使用IP协议和ICMP协议在机器间寻址并路由数据包.IP/ICMP尽其最大努力尝试在机器之间传递数据包,但是它们不能保证数据包是否能真正达到其目的地. 网络层上面是传输层,它定义了TCP和UDP.TCP是可靠的协议,它保证消息通过网络…
6.1 磁盘I/O介绍 一般来说,Linux磁盘的每个分区要么包含一个文件系统,要么包含一个交换分区.这些分区被挂载到Linux根文件系统,该系统由/etc/fstab指定.这些被挂载的文件系统包含了应用程序要读写的文件. 当一个应用程序进行读写时,Linux内核可以在其高速缓存或者缓冲区中保存文件的副本,并且可以在不访问磁盘的情况下返回被请求的信息.但是,如果Linux内核没有在内存中保存数据副本,那它就向磁盘I/O队列添加一个请求.若Linux内核注意到多个请求都指向磁盘内相邻的区域,它会把…
3.1内存性能统计信息 3.1.1 内存子系统和性能 和CPU相比,内存的读写速度都大大落后于CPU.为了弥补这个差距,通常CPU会采用高速缓存的机制(高cache). 3.1.2 内存子系统(虚拟存储器) 在物理内存寻址时,Linux将其分成块或者内存“页”.内存页面过小,会造成管理内存时产生大的花销:内存页面大时,则容易造成内存的浪费. l  交换(物理内存不足) 内存的大小是固定的,当内存不够用时,内核会使用硬盘作为临时存储器,这个硬盘空间称为交换分区(swap space). 交换分区确…
4.1进程性能统计信息 4.1.1. 内核时间VS用户时间 一个应用程序所耗时间最基本的划分是内核时间与用户时间.内核时间是消耗在Linux内核上的时间,而用户时间则是消耗在应用程序或库代码上的时间.Linux有工具,如time和ps,可以(大致)表明应用程序将其时间花费在应用程序代码上还是话费在内核代码上. 4.1.2 库时间VS应用程序时间 任何应用程序,即便其复杂性非常低,也需要依赖系统库才能执行复杂的操作.这些库可能导致性能问题,因此,能够查看应用程序在某个库中花费了多少时间很重要了.在…
版权声明:本文出自汪磊的博客,未经作者允许禁止转载. 本篇博客主要记录一些工作中常用的UI渲染性能优化及调试方法,理解这些方法对于我们编写高质量代码也是有一些帮助的,主要内容包括介绍CPU,GPU的职责,UI的overdraw,Hierarchy View工具的使用以及canvas.clipRect()方法防止View的重叠绘制,都是一些老生常谈的玩意,只是为了自己记录一下才写出来,如果您已经掌握,直接跳过就可以了. 一.CPU,GPU的职责介绍 对于大多数手机的屏幕刷新频率是60hz,也就是如…
ListView优化一直是一个老生常谈的问题.无论是面试还是寻常的开发中,ListView永远不会被忽略掉,那么这篇文章我们来看看怎样最大化的优化ListView的性能. 1.在adapter中的getView方法中尽量少使用逻辑 2.尽最大可能避免GC 3.滑动的时候不载入图片 4.将ListView的scrollingCache和animateCache设置为false 5.item的布局层级越烧越好 6.使用ViewHolder 1.在adapter中的getView方法中尽量少使用逻辑…
十年河东,十年河西,莫欺少年穷. EF就如同那个少年,ADO.NET则是一位壮年.毕竟ADO.NET出生在EF之前,而EF所走的路属于应用ADO.NET. 也就是说:你所写的LINQ查询,最后还是要转化为ADO.NET的SQL语句,转化过程中无形降低了EF的执行效率. 但是,使用EF的一个好处就是系统便于维护,减少了系统开发时间,降低了生成成本. OK,上述只是做个简单的对比,那么在实际编码过程中,我们应当怎样提升EF的性能呢? 工欲善其事,必先利其器. 我们使用EF和在很大程度提高了开发速度,…
web性能权威指南 page 203 经典的性能优化最佳实践 无论什么网络,也不管所用网络协议是什么版本,所有应用都应该致力于消除或减 少不必要的网络延迟,将需要传输的数据压缩至最少.这两条标准是经典的性能优 化最佳实践,是其他数十条性能准则的出发点. 减少DNS查找 每一次主机名解析都需要一次网络往返,从而增加请求的延迟时间,同时还会阻 塞后续请求. 重用TCP连接 尽可能使用持久连接,以消除 TCP 握手和慢启动延迟;参见 2.2.2 节“慢启动”. 减少HTTP重定向 HTTP 重定向极费…
文章目录 Java性能优化 尽量在合适的场合使用单例 尽量避免随意使用静态变量 尽量避免过多过常地创建Java对象 尽量使用final修饰符 尽量使用局部变量 尽量处理好包装类型和基本类型两者的使用场所 慎用synchronized,尽量减小synchronize的方法 尽量不要使用finalize方法 尽量使用基本数据类型代替对象 多线程在未发生线程安全前提下应尽量使用HashMap.ArrayList 尽量合理的创建HashMap 尽量减少对变量的重复计算 尽量避免不必要的创建 尽量在fin…