| | Re: how does a line ends? Travis Cobbs
|
| | (...) You'll note that I didn't really say that there was anything wrong with your parsing routine (other than some personaly negative feelings about fgetc and ungetc). After fixing the bugs, it will do exactly what you say it will do. It's just (...) (18 years ago, 7-Apr-07, to lugnet.cad, FTX)
|
| | |
| | | | Re: how does a line ends? Travis Cobbs
|
| | | | (...) OK, as promised, here it my fgets replacement: char *myFgets(char *buf, int bufSize, FILE *file) int i; for (i = 0; i < bufSize - 1; i++) int char1 = fgetc(file); if (feof(file)) bufi = 0; if (i > 0) return buf; else return NULL; if (char1 == (...) (18 years ago, 7-Apr-07, to lugnet.cad, FTX)
|
| | | | |
| | | | | | Re: how does a line ends? Chris Phillips
|
| | | | | | (...) That was quick! Thanks for taking the time to indulge me... (...) It is interesting that it was that much time difference. Are these the total load times, or just profiling of the time spent inside the fgets() routines? I see one or two things (...) (18 years ago, 7-Apr-07, to lugnet.cad, FTX)
|
| | | | | | |
| | | | | | | | Re: how does a line ends? Travis Cobbs
|
| | | | | | | | (...) I timed the file reading/parsing portion of the model load. It would have been more difficult to time the actual amount of time spent inside fgets/myFgets, so realistically it's likely that myFgets is even slower in comparison to fgets. The (...) (18 years ago, 7-Apr-07, to lugnet.cad, FTX)
|
| | | | | | | | |
| | | | | | | | | | Re: how does a line ends? Ross Crawford
|
| | | | | | | | | (...) (URL) Google to the rescue>. ROSCO (18 years ago, 7-Apr-07, to lugnet.cad, FTX)
|
| | | | | | | | | |
| | | | | | | | | | | Re: how does a line ends? Travis Cobbs
|
| | | | | | | | | (...) Thanks, ROSCO. I took that code and modified it to use char instead of _TCHAR, and got timings of 720-750ms, compared to the 750-780ms I got with my original one. I then modified it to support CR and LF interchangeably, and got back to the (...) (18 years ago, 7-Apr-07, to lugnet.cad, FTX)
|
| | | | | | | | | |
| | | | | | | | | | | Re: how does a line ends? Chris Phillips
|
| | | | | | | | | | (...) Interesting. I looked at the C runtime library sources that came with MSVC++ 6.0. The fgets() function there is definitely a little different than either yours or the one ROSCO linked. It does have a couple calls for thread safety, but (...) (18 years ago, 7-Apr-07, to lugnet.cad, FTX)
|
| | | | | | | | | | |
| | | | | | | | | | | Re: how does a line ends? Travis Cobbs
|
| | | | | | | | | (...) Now that I'm at work, I'm able to look at Microsoft's implementation of fgets for Visual Studio 2005. They do a lock on the file prior to their loop, then call _fgetc_nolock to get each character, instead of fgetc or fread. (That's an (...) (18 years ago, 9-Apr-07, to lugnet.cad, FTX)
|
| | | | | | | | | |
| | | | | | | | Re: how does a line ends? Travis Cobbs
|
| | | | | | | (...) Quick question. I was in a hurry, and wanted to play it safe, so I call feof instead of checking to see if char1 == EOF. Any idea what gets returned for extended ASCII characters (>= 128)? Does the int contain positive numbers greater than (...) (18 years ago, 7-Apr-07, to lugnet.cad, FTX)
|
| | | | | | | |
| | | | | | Re: how does a line ends? Travis Cobbs
|
| | | | | | (...) Just as a proof of the value of disk caching, loading the same model using the system fgets after a fresh reboot, the same loading portion took 3300ms. Also, I switched the feof calls out for a check of the value against EOF just to see if it (...) (18 years ago, 7-Apr-07, to lugnet.cad, FTX)
|
| | | | | | |
| | | | | | Re: how does a line ends? Anders Isaksson
|
| | | | | (...) As long as you only have one character to 'unget' you could probably speed it up by introducing a static char which holds the 'ungetted' char (or null), instead of going through ungetc() -- fgetc(). OTOH, the if-statement to check if there is (...) (18 years ago, 8-Apr-07, to lugnet.cad)
|
| | | | | |
| | | | | | | Re: how does a line ends? Chris Phillips
|
| | | | | (...) I thought about using a static instead of ungetc() in the first version of readLine() that I posted. This means that you can only read from one open file at a time, but that is usually an OK restriction as long as the programmer is aware of (...) (18 years ago, 8-Apr-07, to lugnet.cad, FTX)
|
| | | | | |
| | | | Re: how does a line ends? Chris Phillips
|
| | | | (...) Yes, sorry that my post sounded overly defensive. I have something of a chip on my shoulder from years of working alongside programmers who want to take shortcuts at the expense of their users. Very few seem to appreciate that it is worth a (...) (18 years ago, 7-Apr-07, to lugnet.cad, FTX)
|
| | | | |