程序员来看看这段代码怎么优化
for ( int i =0; i < num; i++ )//num读取的配置文件个数,现在5个文件,程序显示出来差不多5s了,将来100多了要死了
{
CStdioFile cSf;
wstring m_CurPath = TempPath + _T( "data\\raderinfo\\resultfile\\" ) + m_StrCity[i];
CPoint* PointList = new CPoint[MAX_SIZE];//保存从配置文件读取的数据转化后的坐标,在地图上填充使用
if ( cSf.Open( (LPCTSTR)m_CurPath.c_str(), CStdioFile ::modeRead ) )
{
ResultArray JWArray;//向量保存配置文件数据的坐标
while ( cSf.ReadString( JWStr ) )
{
CString LineTemp = JWStr.Trim();
CTools::StringSplit (LineTemp.GetBuffer(), " ", JWArray );//自定义函数
}
dJd = CTools::StringToLo( JWArray[0] );//自定义函数
dWd = CTools::StringToLa( JWArray[1] );//自定义函数
MapInfo->JwToXy( dJd, dWd, &dX, &dY );//自定义函数
MapInfo->xyLToD( (float)dX, (float)dY, &nDx, &nDy );//自定义函数
pDC->MoveTo( nDx, nDy );//移动到第一个坐标点
int i = 0;//记录PointList个数,填充图形
for ( ResultArray::iterator it = JWArray.begin(); it != JWArray.end(); it++, i++)//绘制多边形
{
dJd = CTools::StringToLo( *it++ );
dWd = CTools::StringToLa( *it );
MapInfo->JwToXy( dJd, dWd, &dX, &dY );
MapInfo->xyLToD( (float)dX, (float)dY, &nDx, &nDy );
pDC->LineTo( nDx, nDy );
PointList[i].x = nDx;
PointList[i].y = nDy;
}
CRgn rgn;
CBrush brush( RGB( 100, 10, 255 ));
if ( rgn.CreatePolygonRgn( PointList, i, ALTERNATE))
{
pDC->fillRgn( &rgn, &brush );//填充绘制的多边形
}
}
delete[] PointList;
}
主要优化程序的执行效率,该怎么优化? 一个配置文件大概5W个坐标点,还有我可不可以吧绘制的图形的坐标点记录起来,应为以后还有多次用到绘制的图像,大家有没有多边形相交的算法?