The size increase factor for vector is a compromise between performance and wasting memory. It's also a fairly hot code path, so you don't want to run some complicated code there to estimate the 'optimal' factor.
About the best you can do is if you know beforehand roughly how big it will be, is to reserve that capacity with std::vector::reserve().
Malloc is at best a few hundred cycles, that's quite a lot of work if you can keep your data in L1. If you do a bit of work now you can save reallocs later.
Think bigger than changing the coefficient, there probably is no optimal factor.
About the best you can do is if you know beforehand roughly how big it will be, is to reserve that capacity with std::vector::reserve().