码迷,mamicode.com
首页 > 其他好文 > 详细

系统性能常见问题

时间:2020-05-13 23:02:06      阅读:107      评论:0      收藏:0      [点我收藏+]

标签:color   速度   优劣   同步阻塞   sock   读写锁   内存   一个   分配   

1.多进程和多线程实现并发编程各自的优劣势是什么?

切换成本不一样,多进程的优势是一个进程挂了不会影响其他的进程,因为内存地址不一样,劣势是独立的地址空间通信比较复杂,一般使用socket编程,而多线程直接在内存中通信

2.协程为什么能实现更高的并发?

  • 切换速度快,进程和线程上下文切换需要进入内核态,而协程可以直接在用户态进行切换
  • 异步非阻塞编程,使用线程的时候一般都是同步阻塞socket或者IO,如果没有完成任务,就会让线程sleep
  • 一个协程所占用的内存非常小,一般只有十几K或者几十K

3.下面两种访问数组的方式哪种更快,为什么?

#方式一
for
(i=0;i++;i<n) for(j=0;j++;j<n) array[i][j]
#方式二
for
(i=0;i++;i<n) for(j=0;j++;j<n) array[j][i]
二维数组在绝大多数内存中都是按行存储的,例如n=5
方式一
array[0][0] array[0][1] array[0][2] array[0][3] array[0][4]
array[1][0] array[1][1] array[1][2] array[1][3] array[1][4]
array[2][0] array[2][1] array[2][2] array[2][3] array[2][4]
array[3][0] array[3][1] array[3][2] array[3][3] array[3][4]
array[4][0] array[4][1] array[4][2] array[4][3] array[4][4]

方式二
array[0][0] array[1][0] array[2][0] array[3][0] array[4][0]
array[0][1] array[0][1] array[0][1] array[0][1] array[0][1]
array[0][2] array[1][2] array[2][2] array[3][2] array[4][2]
array[0][3] array[1][3] array[2][3] array[3][3] array[4][3]
array[0][4] array[1][4] array[2][4] array[3][4] array[4][4]

5.哈希表和二叉查找树相比,各自的优缺点

6.解决哈希表冲突有哪些方法,各自的优缺点是什么?

7.自旋锁有什么特点?不适合用在哪些场景?

8.读写锁用于解决什么问题?读优先和写优先指什么?

9.怎么快速将文件发给客户端?

10.相比堆,为什么栈上分配对象的速度更快?

系统性能常见问题

标签:color   速度   优劣   同步阻塞   sock   读写锁   内存   一个   分配   

原文地址:https://www.cnblogs.com/doupi/p/12885524.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!