On 3/23/15 2:13 PM, rumbu wrote:

Since this code is clearly not the best for this task, as I suspected, I
looked into jitted code and it seems that the .net runtime is smart
enough to recognize this pattern and is doing the following:
- file is mapped into memory using CreateFileMapping
- does not perform any decoding, since \r and \n are ASCII
- does not create any list
- searches incrementally for \r, \r\n, \n using CompareStringA and
LOCALE_INVARIANT and increments at each end of line
- there is no temporary memory allocation since searching is performed
directly on the mapping handle
- returns the count.

This is great investigative and measuring work. Thanks! -- Andrei

Reply via email to