以前一直有个误区,以为:高性能服务器 一定是 多线程来实现的

原因很简单因为误区二导致的: 多线程 一定比 单线程 效率高。其实不然。

redis 核心就是 如果我的数据全都在内存里,我单线程的去操作 就是效率最高的,为什么呢,因为多线程的本质就是 CPU 模拟出来多个线程的情况,这种模拟出来的情况就有一个代价,就是上下文的切换,对于一个内存的系统来说,它没有上下文的切换就是效率最高的。redis 用 单个CPU 绑定一块内存的数据,然后针对这块内存的数据进行多次读写的时候,都是在一个CPU上完成的,所以它是单线程处理这个事。在内存的情况下,这个方案就是最佳方案  —— 阿里 沈询

因为一次CPU上下文的切换大概在 1500ns 左右。

从内存中读取 1MB 的连续数据,耗时大约为 250us,假设1MB的数据由多个线程读取了1000次,那么就有1000次时间上下文的切换,

那么就有1500ns * 1000 = 1500us ,我单线程的读完1MB数据才250us ,你光时间上下文的切换就用了1500us了,我还不算你每次读一点数据 的时间,

最新文章

  1. Cesium原理篇:3最长的一帧之地形(2:高度图)
  2. [Leetcode] Roman to Integer
  3. appium案例
  4. SQL Server Management Studio无法记住密码
  5. Linux_07------Linux的用户和用户组管理
  6. JQuery中html、append、appendTo、after、insertAfter、before、insertBefore、empty、remove的使用
  7. gwt中java与js的相互调用
  8. 支付宝移动支付开发详细教程服务端采用.net mvc webapi(C#)
  9. VS2012下基于Glut 矩阵变换示例程序:
  10. ubuntu12.04.5安装openssh-server所引发的血案
  11. PHP MySQL 简介
  12. Java基本语法-----java数组(一维数组二维数组)
  13. android Native堆
  14. 【转】链接伪类(:hover)CSS背景图片有闪动BUG
  15. @Transactional 事务说明
  16. 20165231 2017-2018-2《Java程序设计》课程总结
  17. Pycharm2017常用快捷键
  18. UGUI 文字效果实现(Shadow\Gradient\Outline)
  19. Webpack 2 视频教程 004 - Webpack 初体验
  20. python: 序列化/反序列化及对象的深拷贝/浅拷贝

热门文章

  1. Java实现 LeetCode 142 环形链表 II(二)
  2. 一、kafka 介绍 && kafka-client
  3. 源码分析(1)-HashMap(JDK1.8)
  4. ubuntu opensips环境搭建
  5. @codeforces - 674G@ Choosing Ads
  6. CentOS安装部署Mysql 5.7
  7. mybatis的嵌套查询与嵌套结果查询的不同
  8. add shell 出现 error: no devices/emulators found
  9. vue学习第一天:v-bind的使用(让属性绑定变量)
  10. 【WebLogic使用】3.WebLogic配置jndi数据源