Is there a way to output the result to a file?
After customized run, the benchmark just quit without any result left. How do I know the performance?
Is this benchmark has hidden output to a text file option? If it exists, it's better for automation.
No but external solutions like MSI Afterburner, RTSS or FRAPS allow you to dump gpu stats to csv file IIRC.
Yes, I am using Fraps and Afterburner. But for one thing, those tools do not capture the final score that the benchmark showed in the final. Second, for Fraps, it's hard to tell when the real 3d benchmark scene starts, there is a loading part in the beginning, different machines have different loading time. I don't know the whole benchmark is fixed time even with very low end graphic cards with 3-4fps. If it's always fixed time, then it's ok for counting time reversely. Or it's very hard to get precise benchmark through automation.
The benchmark stores its score in %TEMP%\ffxv_benchmark_result.txt (yes, that is a real path you can type into Explorer or Win+R etc.) - in fact, this is where the official launcher reads the score from.
I'd say that automating it is a bad idea though. As others have noted, the game apparently isn't very good at prefetching resources, leading to highly variable stutter during the first run. For serious testing you should run it in loop mode and measure the second run.
You may be able to run it in loop mode, wait until the file mentioned has been written twice, then kill the process and record the results; to be honest I'm not sure what it actually does with this file when running in loop mode though.
Even then, the "score" is not exactly a great metric. As mentioned by @SkacikPL I'd recommend getting frametime statistics with an external utility.
After loading, the benchmark appears to have (near-)constant runtime (though I did not test this on low-end systems), so if it does indeed write the score at the end of each run in loop mode, then you could automatically gather good stats by logging frametimes with RTSS/FRAPS/etc. for the entire runtime of the process, killing the process after the second write to the score file as mentioned above, and only keeping the last X seconds of collected stats.
Thank you drdaxxy! I got it!