我在寫一個自定義函數來獲取XML文件中的所有標籤。我使用這個代碼:在XML文件中搜索標籤的優化
wchar_t *GetLine(wchar_t *fileName=L"indexing.xml", wchar_t endSymbol = '\n')
{
SetFilePointer(hReadFile,sizeof(wchar_t) * position, NULL, FILE_BEGIN);
int size;
wchar_t wchr[1];
DWORD dw;
size = 0;
do
{
ReadFile(hReadFile, wchr, sizeof(wchar_t), &dw, NULL);
if(!dw)
{
break;
}
tempGetLine[size] = wchr[0];
size++;
}while(wchr[0] != endSymbol);
tempGetLine[size] = '\0';
position += (size);
return tempGetLine;
}
wchar_t *GetTag(wchar_t *fileName = L"indexing.xml")
{
wchar_t *temp = GetLine(fileName,'>');
int i = 0;
while(*temp != '\0')
{
tempTag[i] = *temp;
i++;
temp++;
}
tempTag[i] = '\0';
return tempTag;
}
它的工作原理,但在一個大文件中,它需要大量的迭代。我如何優化我的代碼?
爲什麼當它沒有對它做任何事情時將文件名傳遞給'GetLine()'?它只是使用'hReadFile',它可能是一個包含已經打開的文件句柄的全局變量。 –
@j_random_hacker你是對的,我的錯,但它與快速編碼沒有任何關係 – abilash
你是否考慮轉向真正的XML解析器。對於原始速度,SAX解析器非常好,否則就有一些輕量級DOM解析器可以使用(我個人推薦[ticpp](http://code.google.com/p/ticpp/)) –