I have the following code:
char fname[255] = {0}
snprintf(fname, 255, \"%s_test_no.%d.txt\", baseLocation, i);
vs
std::stri
If it's REALLY important, measure the two solutions. If not, whichever you think makes most sense from what data you have, company/private coding style standards, etc. Make sure you use an optimised build [with the same optimisation you are going to use in the actual production build, not -O3 because that is the highest, if your production build is using -O1]
I expect that either will be pretty close if you only do a few. If you have several millions, there may be a difference. Which is faster? I'd guess the second [1], but it depends on who wrote the implementation of snprintf
and who wrote the std::string
implementation. Both certainly have the potential to take a lot longer than you would expect from a naive approach to how the function works (and possibly also run faster than you'd expect)
[1] Because I have worked with printf, and it's not a simple function, it spends a lot of time messing about with various groking of the format string. It's not very efficient (and I have looked at the ones in glibc and such too, and they are not noticeably better).
On the other hand std::string
functions are often inlined since they are template implementations, which improves the efficiency. The joker in the pack is whether the memory allocation for std::string
that is likely to happen. Of course, if somehow baselocation
turns to be rather large, you probably don't want to store it as a fixed size local array anyway, so that evens out in that case.