自从上次写了分形绘制后,一直在想办法加快程序运行,于是,自己就想到了多进程,但是,知道的办法不多,只是想到了fork还有OpenMP。
只是,我试了fork还有vfork后,效果不明显,不久没加快,反而降低了速度,而且,一旦创建多于1个进程,程序就出现莫名奇妙的错误。
与是,目前只能用OpenMP了,很简单,在你的for循环之上加上#pragma omp parallel for即可
然后用gcc或g++编译时加上“-fopenmp”
效果很明显,速度加快不少,即使是1024x768的大小
以下是我修改过的分形绘制程序:
#include <cv.h>
#include <highgui.h>
#include <cxcore.h>
#include <stdio.h>
#define IMG_8UB(img,x,y) ((uchar*)(img->imageData + img->widthStep * (y)))[3 * (x)]
#define IMG_8UG(img,x,y) ((uchar*)(img->imageData + img->widthStep * (y)))[3 * (x) + 1]
#define IMG_8UR(img,x,y) ((uchar*)(img->imageData + img->widthStep * (y)))[3 * (x) + 2]
#define IMG_32FB(img,x,y) ((float*)(img->imageData + img->widthStep * (y)))[3 * (x)]
#define IMG_32FG(img,x,y) ((float*)(img->imageD