Obviously one could loop through a file using fgetl or similar function and increment a counter, but is there a way to determine the number of lines in a file without doing such a loop?
Obviously one could loop through a file using fgetl or similar function and increment
Share
I like to use the following code for exactly this task
It is pretty fast if you have enough memory to read the whole file at once. It should work for both Windows- and Linux-style line endings.
Edit: I measured the performance of the answers provided so far. Here is the result for determining the number of lines of a text file containing 1 million double values (one value per line). Average of 10 tries.
So fastest are the approaches using Perl and reading all the file as binary data. I would not be surprised, if Perl internally also read large blocks of the file at once instead of looping through it line by line (just a guess, do not know anything about Perl).
Using a simple
fgetl()-loop is by a factor of 25-75 slower than the other approaches.Edit 2: Included Edric’s 2nd approach, which is much faster and on-par with the Perl solution, I’d say.