共 68 篇文章
共 175 篇文章及评论
从前程序员只对实现功能感兴趣, 多核平台推出之后,程序员又需要多长一根筋。要不写出来的程序效率差, 又要被使用多核机器的玩家骂了。谁愿意用多花钱买了多核机器,软件却是单线程,只用得到单核的性能。
“不就是多线程嘛,好办的不得了。我的程序里面本来存在几个线程。调用库的时候, 库里面就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) 日期: 一月 7th, 2008 在 2:15 上午
好马还要配好鞍,多核的机器要运行多核优化的应用才能真正发挥多 核的优势。
作者: hehe 日期: 八月 6th, 2008 在 7:04 下午
intel的开发人员就这水平???无语了