Based on the comments and the originally posted code (it has now been fixed [now deleted]) there was previously a coding error (i++
missing) that stopped the C++ program from outputting anything. This plus the while(true)
loop in the complete code sample would present symptoms consistent with those stated in the question (i.e. user waits 500s sees no output and force terminates the program). This is because it would complete reading the file without outputting anything and enter into the deliberately added infinite loop.
The revised complete source code correctly completes (according to the comments) in ~1.6s for a 1.2 million file. My advice for improving performance would be as follows:
-
Make sure you are compiling in release mode (not debug mode). Given the user has specified they are using Visual Studio 2017, I would recommend viewing the official Microsoft documentation (https://msdn.microsoft.com/en-us/library/wx0123s5.aspx) for a thorough explanation.
-
To make it easier to diagnose problems do not add an infinite loop at the end of your program. Instead run the executable from powershell / (cmd) and confirm that it terminates correctly.
EDIT: I would also add:
- For accurate timings you also need to take into account the OS disk cache. Run each benchmark multiple times to ‘warm-up’ the disk cache.
2
solved Should C++ file read be slower than Ruby or C#?