目前手机配置:
支持HUAWEI Mate 8非凡表现的,
是拥有强大性能的华为麒麟950芯片。
此芯片为八核4*Cortex A72
2.3GHz + 4*Cortex A53 1.8GHz
我笔记本配置:
问题 是不是cpu核数越高,性能有越好好 性能高关键并发能力强, 问题转移到 多线程与 cpu 核数的关系?
多线程开发的目的:为了提高 CPU 利用率(记住这个很重要)
a1:访问数据库-耗时10ms
a2:计算数据1-耗时2ms
b1:访问文件-耗时10ms
b2:计算数据2-耗时2ms
c1:计算数据(前面获取的数据1和数据2)-耗时2ms
如果用单线程
执行的时间是26ms(10+2+10+2+2),这个很好理解
如果用多线程
这个计算时间是有些复杂的,这里等下解释
理想情况下,机器是双核,同时不考虑超线程,这个时候把 a1+a2, b1+b2 分别放入单独的线程执行(记住 I/O 是不要占用 CPU 资源的)
执行时间是 14ms(10+2+2)
这里就体现出来了,高效利用 CPU,降低执行时间,当然是合理的利用多线程,好处多多,但也不要为了多线程而多线程,看下例(任务B):
a1:访问数据库-耗时2ms
a2:计算数据1-耗时2ms
b1:访问文件-耗时40ms
b2:计算数据2-耗时2ms
c1:计算数据(前面获取的数据1和数据2)-耗时2ms
单线程:48ms 多线程:44ms
这里多线程只比单线程节省了 4ms,而且这还是理想情况下,没有考虑到线程切换带来的损耗,如果线程切换损耗 2ms,那么使用多线程得不偿失,具体情况具体分析,当然谁也不会精确计算程序执行时间,这里需要在调试阶段或者日志记录中寻找瓶颈
一个程序等待IO时间 和处理逻辑时间 那个长
多线程只是为了提高 CPU
利用率,客观的说多线程是跟 CPU 核数是没有关系的,不要混淆概念,现代计算机的单 CPU 多核(相比较多 CPU 单核)都是为了提高计算效率,多线程跟 CPU 核数是没有关系的
总之多线程只是逻辑上的做事的方式,CPU 核数是提高效率的物理手段
超线程这个概念很有意思,上学的时候课本应该是有介绍的,请允许copy一段过来
每个单位时间内,CPU只能处理一个线程(Thread)。除非有两个核心处理单元,否则要想在单位时间内处理超过一个的线程是不可能的。
超线程HT(Hyper-Threading)技术是在单个核心处理单元中集成两个逻辑处理单元,也就是一个实体内核(共享的运算单元),两个逻辑内核(有各自独立的处理器状态),从而可以在单位时间内处理两个分别进行整数和浮点运算的线程,模拟双内核运作。
设一个进程要完成两个任务:任务 1 和任务 2,并且任务 1 要经历 A1àB1àC1 三个步骤才能完成,任务 2 要经历 A2àB2àC2 三个步骤才能完成。
①如果两个任务同步执行的话,完成两个任务是这样执行的: 花费时间段:
这样从 A1 到 C2 只能一个一个地执行,当 A1 执行时,CPU 被占用,B1 到 C2 的线程只能等待,甚至当它们彼此之间并不竞争同一个资源时,也要等待前面的线程执行完毕后才能执行。
②如果两个任务异步执行的话,完成两个任务是这样执行的: 花费时间段:
这样,任务1和任务2就分成两个独立的执行对象,也就是说: A1àB1àC1 和 A2àB2àC2是并发执行的。当 A1 在执行某个运算时,A2 线程可以去做其他的一些事情,比如访问磁盘等外部设备等。
对比①和②两种执行方式,完成所有任务,方式①需要 6 个时间段,而方式②只需要 3 个时间段,方式②所需时间是方式①的一半,所以方式②完成整个任务要快于方式①。
我服务器是64核的,请问业务流程配置多个线程 性能更好呢? 多线程的用途是IO延迟隐藏,提高程序并发能力和CPU核数毫无关系 具体需要结合业务进程测试验证!
参考
https://segmentfault.com/a/1190000 http://bbs.csdn.net/topics/390618790?page=1