]> granicus.if.org Git - graphviz/commit
specialize and accelerate gv_trim_zeros
authorMatthew Fernandez <matthew.fernandez@gmail.com>
Sat, 15 May 2021 15:58:05 +0000 (08:58 -0700)
committerMatthew Fernandez <matthew.fernandez@gmail.com>
Thu, 27 May 2021 03:26:36 +0000 (20:26 -0700)
commitbf800b51ccf5808c9b4faecdec01488b5513c307
treeeaa1895e4b8207242d28f66bae5ce6a0ea15d682
parent08ead2686aa9030a2bd94fa009062781f23725b8
specialize and accelerate gv_trim_zeros

This function trims unnecessary trailing zeros from a printed floating-point
number. It was written to be extremely general, however it is only ever used to
trim a number printed with the format string "%.02f". We can take advantage of
this fact to know that, if it can locate a period, there are exactly two digits
following this that need to be checked. This then allows implementing the
remainder of the function not as a loop but as simply a few branches.

Using tests/regression_tests/large/long_chain, which has been used for other
profiling in this area, this drops total executed instructions from 8160952787
to 8143275099, a speed up of ~2%.
lib/gvc/gvdevice.c