The csv, as name implies, it comma separated value format. That poses an issue when the values do have commas itself. This is solved by using double quotes for strings, that can or could contain commas. Inside double quotas, to express the double quote itself, one needs to escape it (by using two double quotes in a row).
Right now, geex doesn't do either of these things.
Which causes issues, because DemoName and Renderer very often do contain commas, or double quotes.
Without it, it is extremely tedious to parse the csv file, making it almost pointless.
Example, of current output:
Vertex pool + Compute Shaders + SSBO,Linux (X11) 5.10.0-3-amd64 64-bit,zink (AMD RADV FIJI (ACO)),4.6 (Core Profile) Mesa 21.1.0-devel (git-a7dc617807),900,900,NO,,30000,0,42375,1412,1,1420
Vertex pool + Compute Shaders + SSBO,Linux (X11) 5.10.0-3-amd64 64-bit,AMD Radeon (TM) R9 Fury Series (FIJI, DRM 3.40.0, 5.10.0-3-amd64, LLVM 11.0.1),4.6 (Core Profile) Mesa 21.1.0-devel (git-a7dc617807),900,900,NO,,30000,0,173830,5794,1,5811
That makes, it impossible to just import using csv in spreedsheets, or python, gnuplot, or other tools, because the last few "columns" will have different column index depending of how many commas there were in the Renderer or DemoName for example. (The workaround is to instead write custom fixing scripts, that for example start counting columns from ",NO," or something similar.
I suggest, to make values in columns DemoName, Platform, Renderer (first 3 ones), to be always double quoted. The other values (especially simple numeric ones), doesn't (and shouldn't) have quotes, for ease of parsing.
Even while the DemoName often doesn't have commas or double quotes, some parsers still doesn't like naked spaces in unquoted strings (and I agree with that). So that value should also be quoted.
IETF RFC 4180 show a good formal specification, which should be usually followed. Specifically chapter 2, subsections 5 and 7.
PS. Also where we are at it, I would suggest to show more decimal places for the AvgFPS, MinFPS and MaxFPS columns. It now rounded to integer, while the log files do have accuracy down to 0.001 FPS, which is actually useful for super slow benchmarks - <5FPS, where it makes a difference if I see 5 vs 5, and 4.850 vs 5.459.
Nice. The format in 0.41.4.0 looks excellent. I didn't even realized there was also a "ApiVersion" columns, beacuse of the obscuration by all the commas. Now it is clean:
"Geometry Shaders - Mesh Exploder (OpenGL 3.2)","Linux (X11) 5.10.0-3-amd64 64-bit","AMD Radeon (TM) R9 Fury Series (FIJI, DRM 3.40.0, 5.10.0-3-amd64, LLVM 11.0.1)","4.6 (Compatibility Profile) Mesa 20.3.4",1280,720,"NO","",10000,611,61.222,1.000,71.000
I like it. Thanks and case closed :)