在多核平台下面,你的程序能够使用到多核能力的几分之几

随着多核平台的普及,如何充分利用多核处理器成为程序员关注的重点。本文探讨了多线程程序设计中常被忽视的问题——并发级别,并通过实例说明了高并发级别的重要性及其实现方法。
从前程序员只对实现功能感兴趣, 多核平台推出之后,程序员又需要多长一根筋。要不写出来的程序效率差, 又要被使用多核机器的玩家骂了。谁愿意用多花钱买了多核机器,软件却是单线程,只用得到单核的性能。
      “不就是多线程嘛,好办的不得了。我的程序里面本来存在几个线程。调用库的时候, 库里面就implicit的开了几个线程。这样不就适合多核了吗。” 程序员们如是说。
         殊不知少考虑了一个非常重要的问题。一个线程就相当于一个工人, 是不是工人越多,生产效率就越高。这是典型的是否人多力量大的命题。 答案自然是否定的。
         线程是多了, 但是如果同一时间里面只有一个线程在干活, 线程多有什么用!!!  同一时间里面干活的线程数量被称为 concurrency level. 比如同一时间的干活线程数量是4个,那么此时的concurrency level 就是4 (在有些分析软件里面是以0为concurrency level 计数起点,于是此时concurrency level 是3, 比如cfinder 就是如此计concurrency level 的)。 如果4核机器上,concurrency level为4的时间维持得很久, 比如占整个运行时间的80% , 这样的多线程程序是真正对多核机器有效的。
          如果concurrency level 为4的时间,  占整个运行时间的1%, 90%的时间concurrency level 为1 , 这样的多线程程序和单线程有区别吗!!! 这样的程序只能用到单核能力, 多核能力基本没有用到,是一定是需要性能调优的。


本文转自Intel_ISN 51CTO博客,原文链接:http://blog.51cto.com/intelisn/131491,如需转载请自行联系原作者
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值