leia linha por linha da maneira mais eficiente * específica da plataforma *
Estou procurando uma maneira mais eficiente de ler um arquivo de texto.
considerando todas as vantagens possíveis, como a vantagem de:
código será o sistema operacional Windows específico da plataforma
e com o fato de que eu estou escrevendo um específico para CPU atual etc '..
* Não se preocupe, não é multiplataforma.
problema de desempenho simples
como eu poderia codificar da maneira mais rápida, lendo cada linha de um arquivo de texto em uma estrutura?
digamos que a estrutura é:
typdef struct _FileL{
uint lidx;
char* lncontent;
} FileL;
eu estava pensando em algo como:
passando uma matriz dinâmica deFileL
acima e o caminho para o arquivo, qual seria a maneira mais eficiente de preencher e retornar uma coleção de linhas do arquivo fornecido?
getFileLines(char* fullPath, FileL** fileLines){
uint linesCount = 0;// total lines
uint curLnIndex = 0;// lines counter
FILE* srcFL; // will hold the source file using passed fullPath
// now read file into memory
//that is the only way i could think of
//to be able to assign lineCount used to calculate the array length
//and also the fastest way is to read the whole file into memory (?)
srcFL = fopen(fullPath,"r"); // or open() instead of fopen() ?
// problem:
// assigning lineCount somehow would cost the time of reading
// and might aswell just populate it and already store to array..
// so what is the workaround ?
*fileLines =(FileL*) malloc (linesCount * sizeof(FileL));
FileL* CurLn = *fileLines;
while(curLnIndex != linesCount){
char* TmpLnCont;
//read line into TmpLnCont..
CurLn->lidx = curLnIndex ;
CurLn->lncontent = (char*)malloc(sizeof(TmpLnCont));
strcpy(CurLn->lncontent, TmpLnCont);
}
}
como seria uma abordagem mais eficiente?
Editar:
Eu queria atualizar a pergunta como gostaria de abordar a questão da eficiência: a maneira mais eficiente, até os detalhes de digitalizar o arquivo para cada linha, é a única maneira de char por char, como evitar uma chamada para funcionar em cada caractere ... qualquer coisa para maximizar o desempenho do loop em cada linha, o que significa chegar à definição de uma linha com eficiência ...