优化实验 Optimize( 四 )

多进程优化也是没有明显的优化效果 。
void Func6(){ register int i, j; register int i_, j_; register int i__, j__; int block = 8;int id = fork(); if(id == 0) {for(i = 1; i < HEIGHT / 2; i += block){for(j = 1; j < WIDTH - 1; j += block){i__ = minn(HEIGHT / 2, i + block);j__ = minn(WIDTH - 1, j + block);for(i_ = i; i_ < i__; i_ ++){for(j_ = j; j_ < j__; j_ ++){img[i_][j_] = (img[i_][j_ - 1] + img[i_][j_ + 1] + img[i_ - 1][j_] + img[i_ + 1][j_]) / 4;}}}}exit(0); } else {for(i = HEIGHT / 2; i < HEIGHT - 1; i += block){for(j = 1; j < WIDTH - 1; j += block){i__ = minn(HEIGHT - 1, i + block);j__ = minn(WIDTH - 1, j + block);for(i_ = i; i_ < i__; i_ ++){for(j_ = j; j_ < j__; j_ ++){img[i_][j_] = (img[i_][j_ - 1] + img[i_][j_ + 1] + img[i_ - 1][j_] + img[i_ + 1][j_]) / 4;}}}} }}后记

  1. 当把除法改为移位:无明显优化 。
  2. 内联函数:无明显优化 。
  3. 多线程优化在96核的泰山服务器上运行反而性能拖慢了很多,查阅资料得知,这应该是Windows和Linux系统对线程不同的管理造成的,Linux和windows下多线程的区别,Linux下多线程反而造成Cache互相扰乱,从而极大拖慢了程序 。
  4. 关于并发优化未实现优化仍未搞明白 。

经验总结扩展阅读