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 ...