A high level overview is that 'CFile file's 'file.write()' method gets called for every individual integer data value (line 9) along with line 12, where I write a comma to file.
That means that for 327,680 input data integers, there are 2*327,680 = 655,360 file.write() calls. The code is very slow because of this and as a result, the code takes 3 seconds to create one csv file. How could I improve the efficiency of my code?
Note: I cannot change any declarations of the code. I must use CFile. Also, pSrc is of type uint_16_t and is containing the data that I want to store in the .csv file. The data ranges from 0 - 3000 integer values.
1 CFile file;
2 int mWidth = 512;
3 int mHeight = 640;
4 UINT i = 0;
5 char buf[80];
6 UINT sz = mHeight * mWidth; //sz = 327,680
7 while (i < sz) {
8 sprintf_s(buf, sizeof(buf), "%d", pSrc[i]);
9 file.Write(buf, strlen(buf));
10 i++;
11 if (i < sz)
12 file.Write(",", 1);
13 if (i % mWidth == 0)
14 file.Write("\r\n", 2);
15 }
All values are outputted in the 640x512 .csv file containing integers representing degrees Celcius.