I see many people using format strings like this:
root = "sample" output = "output" path = "{}/{}".format(root, output)
Instead of simply concatenating strings like this:
path = root + '/' + output
Do format strings have better performance or is this just for looks?
The main advantages of using format(…) are that the string can be a bit easier to produce and read as in particular in the second example, and that we don't have to explicitly convert all non-string variables to strings with str(…).
Therefore, concatenation is much faster than String.
tl;dr. Avoid using String. format() when possible. It is slow and difficult to read when you have more than two variables.
I have taken a look at String. Format (using Reflector) and it actually creates a StringBuilder then calls AppendFormat on it. So it is quicker than concat for multiple stirngs.
It's just for the looks. You can see at one glance what the format is. Many of us like readability better than micro-optimization.
Let's see what IPython's %timeit
says:
Python 3.7.2 (default, Jan 3 2019, 02:55:40) IPython 5.8.0 Intel(R) Core(TM) i5-4590T CPU @ 2.00GHz In [1]: %timeit root = "sample"; output = "output"; path = "{}/{}".format(root, output) The slowest run took 12.44 times longer than the fastest. This could mean that an intermediate result is being cached. 1000000 loops, best of 5: 223 ns per loop In [2]: %timeit root = "sample"; output = "output"; path = root + '/' + output The slowest run took 13.82 times longer than the fastest. This could mean that an intermediate result is being cached. 10000000 loops, best of 5: 101 ns per loop In [3]: %timeit root = "sample"; output = "output"; path = "%s/%s" % (root, output) The slowest run took 27.97 times longer than the fastest. This could mean that an intermediate result is being cached. 10000000 loops, best of 5: 155 ns per loop In [4]: %timeit root = "sample"; output = "output"; path = f"{root}/{output}" The slowest run took 19.52 times longer than the fastest. This could mean that an intermediate result is being cached. 10000000 loops, best of 5: 77.8 ns per loop
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With