【读书笔记】iOS-使用GCD改善性能】的更多相关文章

1.GCD介绍 GCD:Grand Central Dispathch,核心中央调度,是一种异步技术.但是它是系统级的. 负责管理队列,是线程之上的抽象层.队列可以并行或串行运行,能够在系统级自动管理和优化线程.把任务放到队列里执行,一个任务可以是一个函数或一个block. 1.1.多线程分类 以下的抽象度和底层函数级别从低到高. 1.1.1. PThread 已经抛弃了 1.1.2. NSThread 几乎不用 1.1.3. NSOperation 多用于网络下载,但是现在都用开源库,例如:A…
本章将付息与MySQL性能有关的某些要点. 30.1 改善性能 数据库管理员把他们生命中的相当一部分时间花在了调整.试验以改善DBMS性能之上.在诊断英勇的滞缓现象和性能问题时,性能不良的数据库(以及数据库查询)通常是最常见的祸因. 可以看出,下面的内容并不能完全决定MySQL的性能.我们只是想回顾一下前面各章的重点,提供进行性能优化探讨和分析的一个出发点. 首先,MySQL(与所有DBMS一样),具有特定的硬件建议.在学习和研究MySQL时,使用任何旧的计算机作为服务器都可以.但对用于生产的服…
一,队列简介. 有些与并行处理相关的术语令人迷惑.线程是一个常用的术语,在iOS应用中,线程是标准的POSIX线程.从技术上说,线程不过是一组指令,可在进程中独立地处理:在同一个进程中,可以有多个线程,它们共享内存和资源.由于线程是独立的,可将工作划分给多个线程,以提供工作的完成速度.在多个线程需要访问相同的资源和数据时,也可能出现问题.所有iOS应用都 有一个主线程,它负责处理运行循环以及列新UI.为让应用能够快速响应用户交互,在主线程中执行的任务必须在1/60秒内就能完成. <参考资料:iO…
吞吐量是指,应用程序的TPS: 每秒多少次事务,QPS: 每秒多少次查询等性能指标. 吞吐量调优就是减少垃圾收集器消耗的CPU周期数,从而将更多的CPU周期用于执行应用程序. CMS吞吐调优 CMS包括Minor GC所带来的开销应该小于10%,如果垃圾收集的开销在3%或更少,说明通过调优吞吐量,提升性能的空间就极其有限了. 可用的调优方法如下: 1. 增大新生代空间,以降低Minor GC频率,减少CPU周期占用: 2. 增加老年代空间,以降低CMS频率,并可以减少老年代内存碎片: 3. 优化…
延迟指服务器处理一个请求所花费的时间,单位一般是ms.s. 本文主要讲降低延迟可以做的服务器端JVM优化. JVM延迟优化 新生代 新生代大小决定了应用平均延迟 如果平均Minor GC持续时间大于应用程序平均延迟性要求,可以适当减小新生代空间大小: 如果Minor GC频率大于应用程序平均延迟性要求,可以适当增大新生代空间: 老年代 老年代大小决定了应用最差延迟 FullGC频率大于应用程序最大FullGC频率要求,可以适当增大老年代空间大小: FullGC持续时间大于应用程序最差延迟性要求,…
新生代.老年代.永久代的概念不多说,这三个空间中任何一个不能满足内存分配请求时,就会发生垃圾收集. 新生代不满足内存分配请求时,发生Minor GC,老年代.永久代不满足内存分配请求时,发生Full GC,Minor GC比Full GC持续的时间要短很多. 所以内存空间设置的不合理就会频繁引起垃圾收集,以及OutOfMemoryError错误,严重影响程序性能. Java堆大小计算法则 若你的应用部署在单独的服务器,且该服务器上只有这一个应用,那Java堆肯定是越大越好,但这种情况比较少. J…
概述:JVM性能调优没有一个非常固定的设置,比如堆大小设置多少,老年代设置多少.而是要根据实际的应用程序的系统需求,实际的活跃内存等确定.正文: JVM调优工作流程 整个调优过程是不断重复的一个迭代,后面的步骤有可能影响前面的配置,可能需要重新调优. 应用程序的系统需求 确定应用程序的系统需求是性能调优的基础,后面的调优都会依赖这个要求.一个应用不会无休止地调优下去. 1.可用性 2.可管理性 3.启动时间 4.吞吐量 TPS: 每秒多少次事务 QPS: 每秒多少次查询 5.延迟 比如关键请求必…
好久没写随笔了,最近在读<iOS 7 byTutorials>,很不错,推荐给大家. 每一个好的程序员也都是一个设计师,不懂设计的程序员不是好的CTO.哈哈,开个小玩笑. iOS 7设计的核心思想就是:-------->简洁.但在简洁的UI里面如何让用户发现当前界面的重点,对比度是我们最有力的工具. 对比度有下列四种用途 1.突出重点,淡化非重点 2.加强视觉效果 3.告诉用户哪里可以点击 4.增强文字可读性 举例说明,如图 这是一个简单的闹钟程序,先别着急往下看,先思考一下,这个界面在…
1 string与stringbuilder 并不是stringbuilder任何时候都在性能上占优势,在少量(大约个位数)的字符串时,并不比普通string操作快. string慢的原因不是string.conact(),而是string大量操作时,产生新的对象以及GC回收对象而造成的性能低下. stringbuilder使用前,最好估算一下大约的长度,否则默认16.每次超过长度后将自动翻倍增长. string.concat本质速度比stringbuider的append快,因为本质都是增加字…
如果不使用+imageNamed:,那么把整张图片绘制到CGContext可能是最佳的方式了. 这里我们利用了CALayer的KVC来存储和检索任意的值,将图层和索引打标签. 使用KVC打标签…