中间隔着cache呢,哪能这么比。
这种通用实现也不追求最优。具体平台上用movsq乃至avx512的实现都有。
【 在 javaboy 的大作中提到: 】
: 根据实际硬件不同,也有可能这个是最佳的。
: 如果瓶颈在ddr ram上,比如极端情况用DDR-400搭配主频很高的cpu,那四次*s++=*d++和一次movq很可能是一样快的。movq可以空出一些流水线给超线程用。至于是否用得上那也不保证。反正单线程benchmark很可能看上去差不多。
: intel的cpu对我们程序员来说是个黑盒子。厂家不会公开说它是怎么优化的。没准它的decoder认识连续四条*s++=*d++,会自动翻译成和movq一样的微码。这是完全可以做到,而且很可能已经做了的。唯一确保最佳性能的办法就是做实验测,摸清每个指令的延迟多少,对流水线的影响多大,对cache的影响多大。。。慢慢把黑盒的内部结构给逆向工程出来。(做JIT编译器的人主要就是做这些工作)
: ...................
--
FROM 124.78.168.*