Skip to content
Ruslan Baratov edited this page Mar 4, 2014 · 10 revisions

reverse vs. tmpbuf

Best results table:

      | short           | int     | long    | long long |

----------|-----------------|---------|---------|-----------| 1 digit | reverse/tmpbuf (1) | reverse | reverse | reverse | 2 digits | reverse/tmpbuf (1) | reverse | reverse | reverse | 4 digits | reverse/tmpbuf (1) | reverse | reverse | reverse | 10 digits | reverse/tmpbuf (1) | reverse | reverse | reverse | ANY | reverse/tmpbuf (1) | reverse | reverse | reverse |

(1): only for 64bit short type test on macosx with clang, otherwise reverse better: [link] (https://github.com/ruslo/int-dec-format-tests/blob/master/results/reverse_vs_tmpbuf/macosx-clang-64bit-intel-core-i5-2.3GHz-short.txt)

Notes for tmpbuf: Compilers try to optimize copy from buffer to result destination (msvc use memcpy, gcc/clang use MOVUPS) but it looks like there is not much benefits for such short amount of time and such small buffer's size (maximum buffer size is 20 bytes for uint64_t)

reverse vs. boost::karma

Best results table (combined with previous table):

      | short                    | int     | long    | long long |

----------|--------------------------|---------|---------|-----------| 1 digit | karma/reverse/tmpbuf (1) | reverse | reverse | reverse | 2 digits | karma/reverse/tmpbuf (1) | reverse | reverse | reverse | 4 digits | karma/reverse/tmpbuf (1) | reverse | reverse | reverse | 10 digits | karma/reverse/tmpbuf (1) | reverse | reverse | reverse | ANY | karma/reverse/tmpbuf (1) | reverse | reverse | reverse |

(1): only for 64bit short type test on macosx with clang, otherwise reverse better: [link] (https://github.com/ruslo/int-dec-format-tests/blob/master/results/reverse_vs_karma/macosx-clang-64bit-intel-core-i5-2.3GHz-short.txt)

Clone this wiki locally