Runtime performance

Environments
Label Library type Compiler OS

VS/ho

header-only

Visual Studio 2019

Windows 10

VS/s

static

GCC/ho

header-only

GCC 11.1.0

Ubuntu 20.04

GCC/s

static

Clang/ho

header-only

Clang 12.0.0

Clang/s

static

The benchmarks programs were all run in the same computer and compiled in C++20. The {fmt} version is 8.0.1

You can replicate them in your environment by executing the following commands:

git clone https://github.com/robhz786/strf-benchmarks
cd strf-benchmarks
git submodule update --init
mkdir build
cd build

cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_STANDARD=20 ..
# ( CMAKE_CXX_STANDARD must be 17 or higher )

cmake --build . --target to_char_ptr-static-lib
cmake --build . --target to_char_ptr-header-only
cmake --build . --target to_string-static-lib
cmake --build . --target to_string-header-only
# ( and/or build other targets )

./to_char_ptr-static-lib
./to_char_ptr-header-only
./to_string-static-lib
./to_string-header-only
# ( and/or run other benchmarks )

Writing to char*

Sample 1

Print a string

VS/ho VS/s GCC/ho GCC/s Clang/ho Clang/s

1.strf::to(…​)(…​)

13.6 ns

13.6 ns

10.6 ns

10.7 ns

3.76 ns

3.44 ns

2.strf::to(…​).tr(…​)

23.4 ns

23.5 ns

19.8 ns

19 ns

18.6 ns

16.9 ns

3.fmt::format_to(…​,FMT_COMPILE(…​),…​)

6.21 ns

6.6 ns

13.1 ns

12.9 ns

11.2 ns

11.2 ns

4.fmt::format_to_n(…​,FMT_COMPILE(…​),…​)

205 ns

205 ns

80.5 ns

80.9 ns

74.1 ns

74.4 ns

5.fmt::format_to(…​, "…​", …​)

40 ns

37.9 ns

28.9 ns

27.2 ns

28.7 ns

25.9 ns

6.fmt::format_to_n(…​, "…​", …​)

62.7 ns

61 ns

32.6 ns

31.2 ns

33.8 ns

32.1 ns

7.std::sprintf

78.9 ns

64.5 ns

62.8 ns

  1. strf::to(dest, dest_size)("Blah ", str, "!\n")

  2. strf::to(dest, dest_size).tr("Blah {}!\n", str)

  3. fmt::format_to(dest, FMT_COMPILE("Blah {}!\n"), str)

  4. fmt::format_to_n(dest, dest_size, FMT_COMPILE("Blah {}!\n"), str)

  5. fmt::format_to(dest, "Blah {}!\n", str)

  6. fmt::format_to_n(dest, dest_size, "Blah {}!\n", str)

  7. std::sprintf(dest, "Blah %s!\n", str.c_str())

using
    constexpr std::size_t dest_size = 110;
    char dest[dest_size];
    std::string str = "blah blah blah blah blah ";

Sample 2

Print a string with alignment formatting

VS/ho VS/s GCC/ho GCC/s Clang/ho Clang/s

1.strf::to(…​)(…​)

103 ns

90.3 ns

83.2 ns

67.7 ns

74.1 ns

87.4 ns

2.strf::to(…​).tr(…​)

122 ns

103 ns

95.5 ns

109 ns

78.4 ns

97.1 ns

3.fmt::format_to(…​,FMT_COMPILE(…​),…​)

269 ns

267 ns

160 ns

159 ns

151 ns

151 ns

4.fmt::format_to_n(…​,FMT_COMPILE(…​),…​)

574 ns

560 ns

241 ns

257 ns

216 ns

216 ns

5.fmt::format_to(…​, "…​", …​)

341 ns

322 ns

204 ns

226 ns

198 ns

197 ns

6.fmt::format_to_n(…​, "…​", …​)

367 ns

355 ns

211 ns

231 ns

211 ns

208 ns

7.std::sprintf

174 ns

86.8 ns

87.9 ns

  1. strf::to(dest, dest_size)("Blah ", strf::right(str, 40, '.'), "!\n")

  2. strf::to(dest, dest_size).tr("Blah {}!\n", strf::right(str, 40, '.'))

  3. fmt::format_to(dest, FMT_COMPILE("Blah {:.>40}!\n"), str)

  4. fmt::format_to_n(dest, dest_size, FMT_COMPILE("Blah {:.>40}!\n"), str)

  5. fmt::format_to(dest, "Blah {:.>40}!\n", str)

  6. fmt::format_to_n(dest, dest_size, "Blah {:.>40}!\n", str)

  7. std::sprintf(dest, "Blah %40s!\n", str.c_str())

using
    constexpr std::size_t dest_size = 110;
    char dest[dest_size];
    std::string str = "blah blah blah blah blah ";

Sample 3

Print integer without formatting

VS/ho VS/s GCC/ho GCC/s Clang/ho Clang/s

1.strf::to(…​)(…​)

24.7 ns

24.8 ns

14 ns

19.5 ns

22.3 ns

25.5 ns

2.strf::to(…​).tr(…​)

44.5 ns

45 ns

34.5 ns

34.5 ns

33.9 ns

31.7 ns

3.fmt::format_to(…​,FMT_COMPILE(…​),…​)

11.4 ns

11.3 ns

13.3 ns

13.4 ns

10.9 ns

11 ns

4.fmt::format_to_n(…​,FMT_COMPILE(…​),…​)

206 ns

203 ns

127 ns

127 ns

160 ns

160 ns

5.fmt::format_to(…​, "…​", …​)

83.3 ns

75.2 ns

46.3 ns

45.5 ns

45.6 ns

44.5 ns

6.fmt::format_to_n(…​, "…​", …​)

106 ns

93.4 ns

56.1 ns

52.7 ns

61 ns

57.9 ns

7.std::sprintf

159 ns

118 ns

116 ns

  1. strf::to(dest)("blah ", 123456, " blah ", 0x123456, " blah")

  2. strf::to(dest).tr("blah {} blah {} blah", 123456, 0x123456)

  3. fmt::format_to(dest, FMT_COMPILE("blah {} blah {} blah"), 123456, 0x123456)

  4. fmt::format_to_n(dest, dest_size, FMT_COMPILE("blah {} blah {} blah"), 123456, 0x123456)

  5. fmt::format_to(dest, "blah {} blah {} blah", 123456, 0x123456)

  6. fmt::format_to_n(dest, dest_size, "blah {} blah {} blah", 123456, 0x123456)

  7. std::sprintf(dest, "blah %d blah %d blah", 123456, 0x123456)

using
    constexpr std::size_t dest_size = 110;
    char dest[dest_size];

Sample 4

Print some formatted integers

VS/ho VS/s GCC/ho GCC/s Clang/ho Clang/s

1.strf::to(…​)(…​)

41 ns

40.8 ns

16.3 ns

16.2 ns

25 ns

24.1 ns

2.strf::to(…​).tr(…​)

68.6 ns

67.1 ns

33.3 ns

33.2 ns

34.5 ns

34.3 ns

3.fmt::format_to(…​,FMT_COMPILE(…​),…​)

69.5 ns

70.1 ns

37.5 ns

37.2 ns

27.1 ns

28.3 ns

4.fmt::format_to_n(…​,FMT_COMPILE(…​),…​)

279 ns

281 ns

191 ns

193 ns

180 ns

184 ns

5.fmt::format_to(…​, "…​", …​)

143 ns

126 ns

89.7 ns

90.4 ns

104 ns

94.8 ns

6.fmt::format_to_n(…​, "…​", …​)

162 ns

144 ns

98.9 ns

97.5 ns

122 ns

108 ns

7.std::sprintf

164 ns

121 ns

119 ns

  1. strf::to(dest)("blah ", +strf::dec(123456), " blah ", *strf::hex(0x123456), " blah")

  2. strf::to(dest).tr("blah {} blah {} blah", +strf::dec(123456), *strf::hex(0x123456))

  3. fmt::format_to(dest, FMT_COMPILE("blah {:+} blah {:#x} blah"), 123456, 0x123456)

  4. fmt::format_to_n(dest, dest_size, FMT_COMPILE("blah {:+} blah {:#x} blah"), 123456, 0x123456)

  5. fmt::format_to(dest, "blah {:+} blah {:#x} blah", 123456, 0x123456)

  6. fmt::format_to_n(dest, dest_size, "blah {:+} blah {:#x} blah", 123456, 0x123456)

  7. std::sprintf(dest, "blah %+d blah %#x blah", 123456, 0x123456)

using
    constexpr std::size_t dest_size = 110;
    char dest[dest_size];

Sample 5

Print some formatted integers with alignment

VS/ho VS/s GCC/ho GCC/s Clang/ho Clang/s

1.strf::to(…​)(…​)

68.6 ns

70.8 ns

21.6 ns

37.3 ns

45.6 ns

47.5 ns

2.strf::to(…​).tr(…​)

97.6 ns

102 ns

45.7 ns

84.7 ns

50.7 ns

52.9 ns

3.fmt::format_to(…​,FMT_COMPILE(…​),…​)

79.9 ns

79.6 ns

55.3 ns

54.4 ns

45.1 ns

46.9 ns

4.fmt::format_to_n(…​,FMT_COMPILE(…​),…​)

436 ns

439 ns

267 ns

266 ns

205 ns

209 ns

5.fmt::format_to(…​, "…​", …​)

195 ns

193 ns

150 ns

137 ns

150 ns

153 ns

6.fmt::format_to_n(…​, "…​", …​)

228 ns

218 ns

157 ns

149 ns

171 ns

175 ns

7.std::sprintf

315 ns

166 ns

162 ns

  1. strf::to(dest)("blah ", +strf::right(123456, 20, '_'), " blah ", *strf::hex(0x123456)<20, " blah")

  2. strf::to(dest).tr("blah {} blah {} blah", +strf::right(123456, 20, '_'), *strf::hex(0x123456)<20)

  3. fmt::format_to(dest, FMT_COMPILE("blah {:_>+20} blah {:<#20x} blah"), 123456, 0x123456)

  4. fmt::format_to_n(dest, dest_size, FMT_COMPILE("blah {:_>+20} blah {:<#20x} blah"), 123456, 0x123456)

  5. fmt::format_to(dest, "blah {:_>+20} blah {:<#20x} blah", 123456, 0x123456)

  6. fmt::format_to_n(dest, dest_size, "blah {:_>+20} blah {:<#20x} blah", 123456, 0x123456)

  7. std::sprintf(dest, "blah %+20d blah %#-20x blah", 123456, 0x123456)

using
    constexpr std::size_t dest_size = 110;
    char dest[dest_size];

Sample 6

Print floating-point values without any formatting

VS/ho VS/s GCC/ho GCC/s Clang/ho Clang/s

1.strf::to(…​)(…​)

144 ns

103 ns

65.5 ns

72.4 ns

73.4 ns

79.5 ns

2.strf::to(…​).tr(…​)

152 ns

114 ns

105 ns

89.9 ns

89 ns

107 ns

3.fmt::format_to(…​,FMT_COMPILE(…​),…​)

227 ns

230 ns

99.7 ns

96 ns

96.7 ns

96.8 ns

4.fmt::format_to_n(…​,FMT_COMPILE(…​),…​)

432 ns

429 ns

267 ns

264 ns

217 ns

214 ns

5.fmt::format_to(…​, "…​", …​)

317 ns

318 ns

165 ns

165 ns

153 ns

154 ns

6.fmt::format_to_n(…​, "…​", …​)

345 ns

341 ns

179 ns

173 ns

160 ns

166 ns

7.std::sprintf

882 ns

737 ns

737 ns

  1. strf::to(dest, dest_size)(1.123e+5, ' ', pi, ' ', 1.11e-222)

  2. strf::to(dest, dest_size).tr("{} {} {}", 1.123e+5, pi, 1.11e-222)

  3. fmt::format_to(dest, FMT_COMPILE("{} {} {}"), 1.123e+5, pi, 1.11e-222)

  4. fmt::format_to_n(dest, dest_size, FMT_COMPILE("{} {} {}"), 1.123e+5, pi, 1.11e-222)

  5. fmt::format_to(dest, "{} {} {}", 1.123e+5, pi, 1.11e-222)

  6. fmt::format_to_n(dest, dest_size, "{} {} {}", 1.123e+5, pi, 1.11e-222)

  7. std::sprintf(dest, "%g %g %g", 1.123e+5, pi, 1.11e-222)

Sample 7

Print floating-point values with some formatting

VS/ho VS/s GCC/ho GCC/s Clang/ho Clang/s

1.strf::to(…​)(…​)

149 ns

159 ns

112 ns

123 ns

113 ns

136 ns

2.strf::to(…​).tr(…​)

210 ns

217 ns

157 ns

157 ns

148 ns

158 ns

3.fmt::format_to(…​,FMT_COMPILE(…​),…​)

474 ns

473 ns

317 ns

313 ns

332 ns

337 ns

4.fmt::format_to_n(…​,FMT_COMPILE(…​),…​)

825 ns

838 ns

532 ns

524 ns

479 ns

494 ns

5.fmt::format_to(…​, "…​", …​)

628 ns

618 ns

441 ns

449 ns

467 ns

451 ns

6.fmt::format_to_n(…​, "…​", …​)

656 ns

645 ns

459 ns

457 ns

485 ns

467 ns

7.std::sprintf

1025 ns

862 ns

856 ns

  1. strf::to(dest, dest_size)(*fixed(1.123e+5), ' ', +fixed(pi, 8), ' ', sci(1.11e-222)>30)

  2. strf::to_string.tr("{} {} {}", *fixed(1.123e+5), +fixed(pi, 8), sci(1.11e-222)>30)

  3. fmt::format_to(dest, FMT_COMPILE("{:#f} {:+.8f} {:>30e}"), 1.123e+5, pi, 1.11e-222)

  4. fmt::format_to_n(dest, dest_size, FMT_COMPILE("{:#f} {:+.8f} {:>30e}"), 1.123e+5, pi, 1.11e-222)

  5. fmt::format_to(dest, "{:#f} {:+.8f} {:>30e}", 1.123e+5, pi, 1.11e-222)

  6. fmt::format_to_n(dest, dest_size, "{:#f} {:+.8f} {:>30e}", 1.123e+5, pi, 1.11e-222)

  7. std::sprintf(dest, "%#f %+.8f %30e", 1.123e+5, pi, 1.11e-222)

Writing to std::string

std::to_string versus strf::to_string versus fmt::format

Sample 1

Print an integer and nothing more.

VS/ho VS/s GCC/ho GCC/s Clang/ho Clang/s

1. strf::to_string(…​)

19.4 ns

19.6 ns

2.62 ns

11.2 ns

12.9 ns

12.9 ns

2. strf::to_string.tr(…​)

31.8 ns

31.7 ns

17 ns

17.4 ns

18.2 ns

18.4 ns

3. fmt::format(FMT_COMPILE(…​), …​)

18.1 ns

18.2 ns

2.39 ns

2.23 ns

2.11 ns

2.11 ns

4. fmt::format("…​", …​)

28.4 ns

39.2 ns

21.1 ns

21 ns

11.6 ns

13.5 ns

5. std::to_string

15 ns

1.32 ns

9.84 ns

  1. strf::to_string (123456)

  2. strf::to_string .tr("{}", 123456)

  3. fmt::format(FMT_COMPILE("{}"), 123456)

  4. fmt::format("{}", 123456)

  5. std::to_string(123456)

Sample 2

Print a floting point value and nothing more.

VS/ho VS/s GCC/ho GCC/s Clang/ho Clang/s

1. strf::to_string(…​)

53.9 ns

52.1 ns

23.7 ns

26.8 ns

29 ns

29.3 ns

2. strf::to_string.tr(…​)

64.9 ns

63.5 ns

32.4 ns

75.2 ns

35.4 ns

35.4 ns

3. fmt::format(FMT_COMPILE(…​), …​)

80 ns

79.2 ns

35.7 ns

33.8 ns

37.6 ns

43.9 ns

4. fmt::format("…​", …​)

96.1 ns

114 ns

51.8 ns

51.2 ns

46.8 ns

44.3 ns

5. std::to_string

453 ns

206 ns

211 ns

  1. strf::to_string (0.123456)

  2. strf::to_string .tr("{}", 0.123456)

  3. fmt::format(FMT_COMPILE("{}"), 0.123456)

  4. fmt::format("{}", 0.123456)

  5. std::to_string(0.123456)

Sample 3

Print a string

VS/ho VS/s GCC/ho GCC/s Clang/ho Clang/s

1. strf::to_string(…​)

81.6 ns

77 ns

18.8 ns

25.5 ns

27.3 ns

26.9 ns

2. strf::to_string.tr(…​)

96.3 ns

96.5 ns

43.3 ns

45.5 ns

42 ns

41.7 ns

3. fmt::format(FMT_COMPILE(…​), …​)

144 ns

146 ns

87.6 ns

83.8 ns

70.2 ns

70.3 ns

4. fmt::format("…​", …​)

106 ns

124 ns

61.3 ns

59.4 ns

51.6 ns

53.6 ns

  1. strf::to_string ("Blah ", str, "!\n")

  2. strf::to_string .tr("Blah {}!\n", str)

  3. fmt::format(FMT_COMPILE("Blah {}!\n"), str)

  4. fmt::format("Blah {}!\n", str)

using
    std::string str = "blah blah blah blah blah ";

Sample 4

Print a string with alignment formatting

VS/ho VS/s GCC/ho GCC/s Clang/ho Clang/s

1. strf::to_string(…​)

202 ns

176 ns

111 ns

115 ns

107 ns

95.8 ns

2. strf::to_string.tr(…​)

208 ns

182 ns

130 ns

131 ns

109 ns

103 ns

3. fmt::format(FMT_COMPILE(…​), …​)

368 ns

372 ns

245 ns

247 ns

212 ns

213 ns

4. fmt::format("…​", …​)

449 ns

429 ns

242 ns

298 ns

238 ns

234 ns

  1. strf::to_string ("Blah ", strf::right(str, 40, '.'), "!\n")

  2. strf::to_string .tr("Blah {}!\n", strf::right(str, 40, '.')

  3. fmt::format(FMT_COMPILE("Blah {:.>40}!\n"), str)

  4. fmt::format("Blah {:.>40}!\n", str)

Sample 5

Print integers without formatting

VS/ho VS/s GCC/ho GCC/s Clang/ho Clang/s

1. strf::to_string(…​)

92.7 ns

92.5 ns

19.4 ns

36.4 ns

55.9 ns

62.1 ns

2. strf::to_string.tr(…​)

106 ns

111 ns

54 ns

57.2 ns

60.5 ns

59 ns

3. fmt::format(FMT_COMPILE(…​), …​)

110 ns

114 ns

76.1 ns

71.3 ns

97.5 ns

94.1 ns

4. fmt::format("…​", …​)

153 ns

159 ns

83.6 ns

81.6 ns

70 ns

72.7 ns

  1. strf::to_string ("blah ", 123456, " blah ", 0x123456, " blah")

  2. strf::to_string .tr("blah {} blah {} blah", 123456, 0x123456)

  3. fmt::format(FMT_COMPILE("blah {} blah {} blah"), 123456, 0x123456)

  4. fmt::format("blah {} blah {} blah", 123456, 0x123456)

Sample 6

Print integers with some basic formatting

VS/ho VS/s GCC/ho GCC/s Clang/ho Clang/s

1. strf::to_string(…​)

102 ns

116 ns

20.1 ns

23.5 ns

55.4 ns

54.4 ns

2. strf::to_string.tr(…​)

120 ns

118 ns

56.5 ns

55.5 ns

57.3 ns

54.3 ns

3. fmt::format(FMT_COMPILE(…​), …​)

153 ns

152 ns

134 ns

136 ns

116 ns

117 ns

4. fmt::format("…​", …​)

243 ns

220 ns

133 ns

123 ns

131 ns

126 ns

  1. strf::to_string("blah ", +strf::dec(123456), " blah ", *strf::hex(0x123456), " blah")

  2. strf::to_string.tr("blah {} blah {} blah", +strf::dec(123456), *strf::hex(0x123456))

  3. fmt::format(FMT_COMPILE("blah {:+} blah {:#x} blah"), 123456, 0x123456)

  4. fmt::format("blah {:+} blah {:#x} blah", 123456, 0x123456)

Sample 7

Print some formatted integers with alignment

VS/ho VS/s GCC/ho GCC/s Clang/ho Clang/s

1. strf::to_string(…​)

152 ns

146 ns

31.6 ns

64.4 ns

76.7 ns

85.1 ns

2. strf::to_string.tr(…​)

161 ns

159 ns

68.9 ns

80.5 ns

89.5 ns

75.5 ns

3. fmt::format(FMT_COMPILE(…​), …​)

253 ns

259 ns

153 ns

156 ns

169 ns

168 ns

4. fmt::format("…​", …​)

324 ns

290 ns

183 ns

189 ns

188 ns

192 ns

  1. strf::to_string("blah ", +strf::right(123456, 20, '_'), " blah ", *strf::hex(0x123456)<20, " blah")

  2. strf::to_string.tr("blah {} blah {} blah", +strf::right(123456, 20, '_'), *strf::hex(0x123456)<20)

  3. fmt::format(FMT_COMPILE("blah {:_>+20} blah {:<#20x} blah"), 123456, 0x123456)

  4. fmt::format("blah {:_>+20} blah {:<#20x} blah", 123456, 0x123456)

Sample 8

Print floating-point values without formatting

VS/ho VS/s GCC/ho GCC/s Clang/ho Clang/s

1. strf::to_string(…​)

216 ns

216 ns

80 ns

99.6 ns

85.5 ns

118 ns

2. strf::to_string.tr(…​)

230 ns

232 ns

107 ns

118 ns

118 ns

136 ns

3. fmt::format(FMT_COMPILE(…​), …​)

397 ns

392 ns

174 ns

190 ns

177 ns

182 ns

4. fmt::format("…​", …​)

417 ns

401 ns

214 ns

192 ns

180 ns

175 ns

  1. strf::to_string(1.123e+5, ' ', M_PI, ' ', 1.11e-222)

  2. strf::to_string.tr("{} {} {}", 1.123e+5, M_PI, 1.11e-222)

  3. fmt::format(FMT_COMPILE("{} {} {}"), 1.123e+5, M_PI, 1.11e-222)

  4. fmt::format("{} {} {}", 1.123e+5, M_PI, 1.11e-222)

Sample 9

Print floating-point values with some formatting options

VS/ho VS/s GCC/ho GCC/s Clang/ho Clang/s

1. strf::to_string(…​)

250 ns

242 ns

152 ns

148 ns

155 ns

150 ns

2. strf::to_string.tr(…​)

288 ns

285 ns

186 ns

171 ns

170 ns

184 ns

3. fmt::format(FMT_COMPILE(…​), …​)

699 ns

703 ns

411 ns

423 ns

456 ns

458 ns

4. fmt::format("…​", …​)

810 ns

734 ns

517 ns

542 ns

482 ns

497 ns

  1. strf::to_string(*fixed(1.123e+5), ' ', +fixed(M_PI, 8), ' ', sci(1.11e-222)>30)

  2. strf::to_string.tr("{} {} {}", *fixed(1.123e+5), +fixed(M_PI, 8), sci(1.11e-222)>30)

  3. fmt::format(FMT_COMPILE("{:#f} {:+.8f} {:>30e}"), 1.123e+5, M_PI, 1.11e-222)

  4. fmt::format("{:#f} {:+.8f} {:>30e}", 1.123e+5, M_PI, 1.11e-222)

Compilation performance

You can run these benchmarks in your computer by executing the commands below ( it does not work on Windows ).

git clone https://github.com/robhz786/strf-benchmarks
cd strf-benchmarks
git submodule update --init
cd compilation-benchmarks
export CXX=gcc              # or some other compiler
export CXXFLAGS=--std=c++2a # or some other compile flag ( optional )
./run_benchmarks.py         # this script takes a long time to run

For each row in the tables below, the source file in the leftmost column is compiled 41 times. In each compilation, a certain macro ( SRC_ID ) is defined with a different value, resulting in 41 different object files. The script then links four programs: The first one containing only one of such object files, the second containing 21, the the third with 31, and the last program with all the 41 object files.

The rightmost column is the difference between the values in the columns "31 files" and "41 files".

The comlumn "Compilation times" shows the average times to create one object file.

The flag --std=c++2a was used.

Clang 12.0.0

Static libs, with -Os

Source file

Compilation times (s)

Programs size (kB)

Wall

User

Sys

1 file

21 files

31 files

41 files

Difference

to_charptr_strf.cpp

0.82

0.78

0.03

329.7

455.3

464.2

477.1

12.9

to_charptr_strf_tr.cpp

0.82

0.79

0.02

329.3

458.1

471.0

483.9

12.9

to_charptr_fmtlib_n_c.cpp

1.73

1.70

0.03

205.3

1019.3

1052.7

1086.1

33.4

to_charptr_fmtlib_n.cpp

1.50

1.47

0.02

127.3

145.0

153.8

166.7

12.9

to_charptr_fmtlib_c.cpp

1.30

1.27

0.02

171.2

624.1

645.3

670.5

25.2

to_charptr_fmtlib.cpp

1.51

1.47

0.03

126.6

148.4

161.3

174.2

12.9

to_charptr_sprintf.cpp

0.02

0.01

0.00

16.6

22.0

26.7

31.4

4.7

to_string_strf.cpp

0.92

0.89

0.03

331.4

475.7

493.8

507.8

14.0

to_string_strf_tr.cpp

0.92

0.89

0.03

330.5

482.0

500.1

518.3

18.1

to_string_fmtlib_c.cpp

1.46

1.43

0.03

185.7

777.0

803.1

837.3

34.3

to_string_fmtlib.cpp

0.48

0.46

0.02

123.8

143.2

152.9

166.7

13.8

to_FILE_strf.cpp

0.82

0.80

0.02

330.7

455.9

464.8

473.7

8.9

to_FILE_strf_tr.cpp

0.83

0.80

0.02

330.0

458.4

471.4

480.4

8.9

to_FILE_fmtlib.cpp

0.47

0.45

0.01

123.4

133.1

137.9

142.7

4.8

to_FILE_fprintf.cpp

0.02

0.01

0.00

16.6

22.1

22.9

27.7

4.8

to_ostream_strf.cpp

0.99

0.95

0.03

330.9

457.4

466.7

480.1

13.4

to_ostream_strf_tr.cpp

0.99

0.96

0.03

330.0

463.7

477.1

486.4

9.3

to_ostream_fmtlib.cpp

1.58

1.54

0.03

126.8

145.3

154.6

168.0

13.4

Header-only libs, with -Os

Source file

Compilation times (s)

Programs size (kB)

Wall

User

Sys

1 file

21 files

31 files

41 files

Difference

to_charptr_strf.cpp

1.34

1.30

0.03

105.8

231.4

240.2

253.1

12.9

to_charptr_strf_tr.cpp

1.35

1.32

0.03

101.2

234.1

247.0

255.8

8.8

to_charptr_fmtlib_n_c.cpp

2.28

2.24

0.03

128.0

954.5

992.0

1033.6

41.6

to_charptr_fmtlib_n.cpp

1.96

1.92

0.03

115.7

149.8

166.8

183.8

17.0

to_charptr_fmtlib_c.cpp

1.85

1.82

0.03

89.8

559.3

584.6

618.0

33.4

to_charptr_fmtlib.cpp

1.95

1.91

0.03

115.0

153.2

170.2

187.2

17.0

to_string_strf.cpp

1.44

1.41

0.03

107.4

251.7

265.7

283.9

18.1

to_string_strf_tr.cpp

1.45

1.41

0.03

106.6

258.0

276.2

294.3

18.1

to_string_fmtlib_c.cpp

2.01

1.97

0.03

104.3

708.1

742.4

780.7

38.4

to_string_fmtlib.cpp

1.98

1.94

0.03

115.0

183.6

213.7

248.0

34.3

to_FILE_strf.cpp

1.35

1.32

0.03

106.7

227.8

236.7

245.7

8.9

to_FILE_strf_tr.cpp

1.36

1.32

0.03

101.9

230.3

243.4

252.3

8.9

to_FILE_fmtlib.cpp

1.96

1.93

0.03

119.6

153.8

170.9

179.8

8.9

to_ostream_strf.cpp

1.51

1.47

0.03

106.9

233.4

242.7

252.0

9.3

to_ostream_strf_tr.cpp

1.51

1.47

0.03

101.9

235.6

253.1

262.4

9.3

to_ostream_fmtlib.cpp

1.96

1.92

0.03

115.2

150.1

163.5

176.9

13.4

Static libs, with -O3

Source file

Compilation times (s)

Programs size (kB)

Wall

User

Sys

1 file

21 files

31 files

41 files

Difference

to_charptr_strf.cpp

0.87

0.84

0.02

446.0

620.1

628.9

645.9

17.0

to_charptr_strf_tr.cpp

0.87

0.85

0.02

441.4

612.4

625.4

638.3

12.9

to_charptr_fmtlib_n_c.cpp

2.08

2.04

0.03

234.6

1284.3

1321.8

1359.3

37.5

to_charptr_fmtlib_n.cpp

2.02

1.98

0.03

152.9

170.6

179.4

196.4

17.0

to_charptr_fmtlib_c.cpp

1.76

1.72

0.03

200.3

991.3

1016.5

1041.7

25.2

to_charptr_fmtlib.cpp

1.99

1.96

0.03

152.5

174.2

183.0

196.0

12.9

to_charptr_sprintf.cpp

0.02

0.02

0.00

16.6

22.0

26.7

31.4

4.7

to_string_strf.cpp

0.96

0.93

0.03

448.0

603.2

617.2

639.4

22.2

to_string_strf_tr.cpp

0.96

0.93

0.03

446.9

606.0

628.3

654.6

26.3

to_string_fmtlib_c.cpp

1.77

1.74

0.03

212.7

1042.2

1076.4

1110.7

34.3

to_string_fmtlib.cpp

0.48

0.46

0.02

141.5

165.0

170.6

180.3

9.7

to_FILE_strf.cpp

0.86

0.83

0.02

447.3

576.8

589.8

602.8

13.0

to_FILE_strf_tr.cpp

0.87

0.84

0.02

446.4

584.1

597.1

614.2

17.1

to_FILE_fmtlib.cpp

0.47

0.45

0.02

141.1

146.7

155.6

160.4

4.8

to_FILE_fprintf.cpp

0.02

0.01

0.00

16.6

22.1

22.9

27.7

4.8

to_ostream_strf.cpp

1.02

0.99

0.03

447.5

580.9

594.3

607.6

13.4

to_ostream_strf_tr.cpp

1.03

1.00

0.03

442.3

587.8

601.2

618.7

17.5

to_ostream_fmtlib.cpp

2.07

2.04

0.03

153.2

221.4

230.7

240.0

9.3

Header-only libs, with -O3

Source file

Compilation times (s)

Programs size (kB)

Wall

User

Sys

1 file

21 files

31 files

41 files

Difference

to_charptr_strf.cpp

1.55

1.52

0.03

113.0

300.0

317.1

325.9

8.8

to_charptr_strf_tr.cpp

1.54

1.51

0.03

113.1

288.3

297.1

314.2

17.0

to_charptr_fmtlib_n_c.cpp

2.75

2.71

0.03

137.6

1207.9

1249.5

1295.2

45.7

to_charptr_fmtlib_n.cpp

2.64

2.60

0.03

135.9

169.9

182.9

199.9

17.0

to_charptr_fmtlib_c.cpp

2.43

2.39

0.03

107.4

914.9

944.2

977.6

33.4

to_charptr_fmtlib.cpp

2.59

2.56

0.03

131.3

169.5

186.5

203.5

17.0

to_string_strf.cpp

1.63

1.59

0.03

115.7

277.7

299.9

318.1

18.1

to_string_strf_tr.cpp

1.64

1.60

0.03

114.6

279.9

302.2

328.5

26.3

to_string_fmtlib_c.cpp

2.44

2.40

0.03

123.9

961.7

1000.0

1042.5

42.5

to_string_fmtlib.cpp

2.62

2.59

0.03

131.3

199.8

230.0

264.3

34.3

to_FILE_strf.cpp

1.53

1.50

0.03

115.0

255.1

264.0

281.2

17.1

to_FILE_strf_tr.cpp

1.54

1.51

0.03

114.1

257.8

274.9

287.9

13.0

to_FILE_fmtlib.cpp

2.60

2.57

0.03

135.9

170.1

183.1

200.2

17.1

to_ostream_strf.cpp

1.69

1.65

0.03

115.2

259.5

268.8

286.3

17.5

to_ostream_strf_tr.cpp

1.70

1.66

0.03

114.1

261.7

279.2

292.6

13.4

to_ostream_fmtlib.cpp

2.61

2.58

0.03

132.1

212.6

230.1

247.6

17.5

Static libs, with -g

Source file

Compilation times (s)

Programs size (kB)

Wall

User

Sys

1 file

21 files

31 files

41 files

Difference

to_charptr_strf.cpp

0.73

0.70

0.03

1650.6

5038.7

6596.4

8150.1

1553.7

to_charptr_strf_tr.cpp

0.74

0.71

0.03

1677.4

5549.1

7179.6

8806.0

1626.4

to_charptr_fmtlib_n_c.cpp

0.91

0.87

0.03

1220.7

7862.4

9878.2

11878.1

1999.9

to_charptr_fmtlib_n.cpp

0.90

0.87

0.03

945.8

5084.6

7058.0

9035.4

1977.5

to_charptr_fmtlib_c.cpp

0.85

0.82

0.03

1099.1

6663.7

8545.9

10412.4

1866.6

to_charptr_fmtlib.cpp

0.90

0.87

0.03

943.2

5038.6

6989.8

8945.0

1955.2

to_charptr_sprintf.cpp

0.02

0.01

0.00

29.8

180.0

253.0

326.1

73.1

to_string_strf.cpp

0.81

0.78

0.03

1712.2

5370.2

7056.6

8743.2

1686.5

to_string_strf_tr.cpp

0.82

0.78

0.03

1733.1

5846.2

7589.4

9324.3

1734.9

to_string_fmtlib_c.cpp

0.87

0.84

0.03

1176.8

7152.2

9093.8

11023.8

1930.0

to_string_fmtlib.cpp

0.47

0.45

0.01

814.2

1941.5

2409.2

2880.9

471.7

to_FILE_strf.cpp

0.74

0.71

0.03

1652.9

5048.7

6608.5

8168.9

1560.4

to_FILE_strf_tr.cpp

0.75

0.71

0.03

1679.8

5557.8

7191.1

8824.4

1633.3

to_FILE_fmtlib.cpp

0.46

0.44

0.02

781.3

1661.8

2008.4

2359.1

350.7

to_FILE_fprintf.cpp

0.02

0.01

0.00

29.6

173.3

241.1

313.0

71.9

to_ostream_strf.cpp

0.90

0.86

0.03

1663.6

5077.7

6646.4

8206.9

1560.6

to_ostream_strf_tr.cpp

0.90

0.87

0.03

1690.7

5598.6

7235.4

8872.2

1636.7

to_ostream_fmtlib.cpp

0.97

0.94

0.03

952.4

5044.6

6995.0

8937.1

1942.1

Header-only libs, with -g

Source file

Compilation times (s)

Programs size (kB)

Wall

User

Sys

1 file

21 files

31 files

41 files

Difference

to_charptr_strf.cpp

0.88

0.85

0.03

889.5

5511.2

7691.8

9864.5

2172.7

to_charptr_strf_tr.cpp

0.89

0.85

0.03

912.2

6025.2

8270.1

10519.3

2249.2

to_charptr_fmtlib_n_c.cpp

1.26

1.22

0.04

717.9

8263.7

10725.4

13175.4

2450.0

to_charptr_fmtlib_n.cpp

1.14

1.09

0.04

689.5

5727.3

8152.2

10577.1

2424.9

to_charptr_fmtlib_c.cpp

1.20

1.16

0.03

600.5

7062.3

9395.0

11708.1

2313.1

to_charptr_fmtlib.cpp

1.14

1.09

0.04

682.8

5681.3

8084.0

10486.7

2402.7

to_string_strf.cpp

0.97

0.93

0.04

951.2

5846.4

8147.3

10452.6

2305.3

to_string_strf_tr.cpp

0.97

0.93

0.03

967.9

6322.0

8679.3

11036.7

2357.5

to_string_fmtlib_c.cpp

1.23

1.18

0.04

683.1

7543.2

9931.2

12307.7

2376.4

to_string_fmtlib.cpp

1.14

1.09

0.04

709.8

5727.5

8142.3

10557.2

2414.9

to_FILE_strf.cpp

0.89

0.85

0.04

892.0

5523.5

7707.5

9887.8

2180.2

to_FILE_strf_tr.cpp

0.90

0.86

0.03

914.5

6034.7

8282.8

10535.1

2252.4

to_FILE_fmtlib.cpp

1.14

1.09

0.04

694.4

5747.9

8181.0

10614.1

2433.2

to_ostream_strf.cpp

1.05

1.01

0.04

902.6

5550.5

7738.0

9921.8

2183.8

to_ostream_strf_tr.cpp

1.06

1.02

0.04

925.5

6076.0

8331.7

10587.6

2256.0

to_ostream_fmtlib.cpp

1.15

1.10

0.04

691.6

5683.1

8072.9

10462.6

2389.8

GCC 11.1.0

Static libs, with -Os

Source file

Compilation times (s)

Programs size (kB)

Wall

User

Sys

1 file

21 files

31 files

41 files

Difference

to_charptr_strf.cpp

0.98

0.91

0.06

317.9

463.0

489.2

515.4

26.3

to_charptr_strf_tr.cpp

0.97

0.91

0.06

316.8

405.5

448.1

494.9

46.8

to_charptr_fmtlib_n_c.cpp

1.64

1.58

0.05

190.5

1002.6

1045.7

1092.9

47.2

to_charptr_fmtlib_n.cpp

1.58

1.52

0.05

122.6

167.9

188.5

209.1

20.6

to_charptr_fmtlib_c.cpp

1.38

1.32

0.05

152.1

559.4

622.8

731.5

108.7

to_charptr_fmtlib.cpp

1.57

1.51

0.06

122.2

163.4

184.0

208.8

24.7

to_charptr_sprintf.cpp

0.02

0.02

0.00

16.6

21.9

26.7

31.4

4.7

to_string_strf.cpp

1.01

0.94

0.06

317.7

425.1

476.9

528.8

51.9

to_string_strf_tr.cpp

1.02

0.96

0.05

317.8

416.6

464.4

508.1

43.7

to_string_fmtlib_c.cpp

1.49

1.43

0.05

165.4

659.4

690.7

726.1

35.4

to_string_fmtlib.cpp

0.38

0.35

0.02

116.1

135.3

144.8

154.4

9.6

to_FILE_strf.cpp

0.98

0.92

0.05

318.5

464.2

490.5

512.7

22.3

to_FILE_strf_tr.cpp

0.97

0.92

0.05

317.4

402.1

440.8

483.5

42.8

to_FILE_fmtlib.cpp

0.35

0.32

0.02

115.9

125.5

130.4

135.2

4.8

to_FILE_fprintf.cpp

0.02

0.02

0.00

16.6

22.1

26.9

27.7

0.7

to_ostream_strf.cpp

1.01

0.95

0.05

318.2

470.9

501.2

527.4

26.3

to_ostream_strf_tr.cpp

1.00

0.94

0.05

317.2

401.8

440.4

483.1

42.7

to_ostream_fmtlib.cpp

1.54

1.48

0.05

122.4

163.2

183.6

204.0

20.4

Header-only libs, with -Os

Source file

Compilation times (s)

Programs size (kB)

Wall

User

Sys

1 file

21 files

31 files

41 files

Difference

to_charptr_strf.cpp

1.67

1.61

0.06

92.9

325.2

390.9

460.7

69.8

to_charptr_strf_tr.cpp

1.67

1.60

0.06

91.9

267.7

354.0

436.2

82.2

to_charptr_fmtlib_n_c.cpp

2.27

2.19

0.07

116.9

950.3

1006.1

1062.0

55.9

to_charptr_fmtlib_n.cpp

2.21

2.13

0.07

109.0

197.6

244.0

290.4

46.4

to_charptr_fmtlib_c.cpp

2.02

1.94

0.07

82.6

511.2

587.4

704.8

117.4

to_charptr_fmtlib.cpp

2.20

2.12

0.07

108.6

197.3

239.6

281.9

42.3

to_string_strf.cpp

1.71

1.64

0.06

96.9

287.4

378.7

470.1

91.4

to_string_strf_tr.cpp

1.72

1.65

0.06

97.0

278.9

366.1

457.5

91.4

to_string_fmtlib_c.cpp

2.12

2.05

0.07

96.1

615.4

659.5

707.7

48.2

to_string_fmtlib.cpp

2.21

2.14

0.07

112.7

211.1

262.3

309.5

47.2

to_FILE_strf.cpp

1.68

1.61

0.06

93.6

326.5

392.2

458.0

65.8

to_FILE_strf_tr.cpp

1.68

1.61

0.06

92.4

264.4

346.6

428.9

82.3

to_FILE_fmtlib.cpp

2.25

2.17

0.07

114.0

202.8

245.2

291.7

46.5

to_ostream_strf.cpp

1.72

1.65

0.06

97.4

337.2

402.9

468.6

65.7

to_ostream_strf_tr.cpp

1.72

1.64

0.06

92.3

264.1

346.2

428.5

82.2

to_ostream_fmtlib.cpp

2.18

2.11

0.07

108.7

197.5

239.8

286.2

46.4

Static libs, with -O3

Source file

Compilation times (s)

Programs size (kB)

Wall

User

Sys

1 file

21 files

31 files

41 files

Difference

to_charptr_strf.cpp

1.07

1.01

0.05

425.9

611.9

682.5

753.0

70.5

to_charptr_strf_tr.cpp

1.07

1.02

0.05

427.0

597.6

684.8

767.8

83.0

to_charptr_fmtlib_n_c.cpp

2.35

2.28

0.06

238.5

1414.3

1518.5

1622.5

104.0

to_charptr_fmtlib_n.cpp

2.23

2.16

0.06

153.4

167.9

181.3

186.6

5.2

to_charptr_fmtlib_c.cpp

2.08

2.01

0.06

206.8

1054.1

1158.0

1364.6

206.6

to_charptr_fmtlib.cpp

2.22

2.15

0.06

148.9

171.6

180.9

194.3

13.4

to_charptr_sprintf.cpp

0.02

0.02

0.00

16.6

21.9

26.7

31.4

4.7

to_string_strf.cpp

1.16

1.10

0.05

430.7

649.1

762.0

870.9

108.9

to_string_strf_tr.cpp

1.13

1.07

0.05

428.1

626.7

719.7

816.7

97.1

to_string_fmtlib_c.cpp

2.12

2.06

0.06

217.0

1180.5

1236.1

1287.6

51.5

to_string_fmtlib.cpp

0.39

0.36

0.02

147.3

188.4

207.0

229.6

22.6

to_FILE_strf.cpp

1.11

1.05

0.05

426.8

646.7

738.3

813.6

75.2

to_FILE_strf_tr.cpp

1.10

1.04

0.05

428.1

611.7

703.3

790.7

87.5

to_FILE_fmtlib.cpp

0.35

0.33

0.02

143.0

152.7

157.5

162.3

4.8

to_FILE_fprintf.cpp

0.02

0.02

0.00

16.6

22.1

26.9

27.7

0.7

to_ostream_strf.cpp

1.15

1.09

0.05

426.5

643.2

730.6

809.8

79.2

to_ostream_strf_tr.cpp

1.13

1.08

0.05

428.0

611.4

702.9

794.4

91.5

to_ostream_fmtlib.cpp

2.18

2.12

0.06

153.5

168.0

177.3

186.7

9.3

Header-only libs, with -O3

Source file

Compilation times (s)

Programs size (kB)

Wall

User

Sys

1 file

21 files

31 files

41 files

Difference

to_charptr_strf.cpp

2.27

2.20

0.06

121.4

624.8

839.4

1025.2

185.8

to_charptr_strf_tr.cpp

2.20

2.12

0.07

117.9

514.3

716.4

914.4

198.0

to_charptr_fmtlib_n_c.cpp

3.20

3.11

0.08

142.4

1351.3

1468.1

1580.7

112.7

to_charptr_fmtlib_n.cpp

3.02

2.93

0.08

132.1

180.3

206.5

228.6

22.1

to_charptr_fmtlib_c.cpp

2.67

2.58

0.07

107.9

881.0

1006.3

1214.2

207.9

to_charptr_fmtlib.cpp

2.97

2.89

0.08

131.8

180.1

206.3

232.4

26.2

to_string_strf.cpp

2.25

2.17

0.06

118.7

623.8

856.6

1097.7

241.1

to_string_strf_tr.cpp

2.19

2.12

0.07

114.9

539.3

751.3

959.2

207.9

to_string_fmtlib_c.cpp

2.88

2.79

0.08

117.6

1073.1

1141.5

1205.8

64.3

to_string_fmtlib.cpp

3.01

2.92

0.08

131.4

203.5

239.6

279.8

40.2

to_FILE_strf.cpp

2.25

2.17

0.07

118.7

589.8

793.0

950.9

157.9

to_FILE_strf_tr.cpp

2.26

2.18

0.07

119.1

532.5

739.0

941.4

202.4

to_FILE_fmtlib.cpp

3.04

2.96

0.08

136.6

211.1

250.4

289.8

39.3

to_ostream_strf.cpp

2.27

2.20

0.06

118.5

565.5

760.3

909.9

149.6

to_ostream_strf_tr.cpp

2.30

2.22

0.07

118.9

528.1

734.6

941.0

206.4

to_ostream_fmtlib.cpp

2.96

2.87

0.08

135.9

180.1

202.2

228.4

26.2

Static libs, with -g

Source file

Compilation times (s)

Programs size (kB)

Wall

User

Sys

1 file

21 files

31 files

41 files

Difference

to_charptr_strf.cpp

1.06

0.99

0.07

1759.8

6133.7

8185.7

10246.1

2060.4

to_charptr_strf_tr.cpp

1.08

1.00

0.07

1790.5

6633.3

8776.9

10920.6

2143.7

to_charptr_fmtlib_n_c.cpp

1.16

1.10

0.06

1314.6

7952.8

10208.0

12453.3

2245.3

to_charptr_fmtlib_n.cpp

1.21

1.15

0.06

1072.3

5720.3

7965.3

10210.4

2245.1

to_charptr_fmtlib_c.cpp

1.10

1.03

0.05

1220.0

7159.4

9290.3

11403.2

2112.9

to_charptr_fmtlib.cpp

1.21

1.15

0.06

1069.9

5690.4

7923.2

10156.1

2232.9

to_charptr_sprintf.cpp

0.03

0.02

0.00

31.5

196.1

274.3

352.6

78.2

to_string_strf.cpp

1.11

1.04

0.07

1886.0

6887.1

9262.0

11637.1

2375.1

to_string_strf_tr.cpp

1.12

1.05

0.07

1906.0

7338.6

9770.2

12205.9

2435.8

to_string_fmtlib_c.cpp

1.13

1.06

0.06

1315.6

7599.0

9788.0

11967.7

2179.6

to_string_fmtlib.cpp

0.42

0.39

0.03

933.8

2303.5

2909.7

3511.8

602.2

to_FILE_strf.cpp

1.07

1.00

0.06

1767.3

6146.4

8215.8

10277.2

2061.4

to_FILE_strf_tr.cpp

1.08

1.01

0.06

1793.8

6650.8

8795.0

10947.5

2152.5

to_FILE_fmtlib.cpp

0.40

0.37

0.03

878.1

1802.0

2187.3

2568.5

381.2

to_FILE_fprintf.cpp

0.03

0.02

0.00

31.4

188.7

265.4

346.1

80.7

to_ostream_strf.cpp

1.10

1.03

0.06

1777.6

6152.6

8214.0

10271.4

2057.5

to_ostream_strf_tr.cpp

1.10

1.04

0.06

1804.5

6666.2

8806.6

10951.2

2144.6

to_ostream_fmtlib.cpp

1.18

1.11

0.06

1084.4

5755.5

7991.9

10224.3

2232.4

Header-only libs, with -g

Source file

Compilation times (s)

Programs size (kB)

Wall

User

Sys

1 file

21 files

31 files

41 files

Difference

to_charptr_strf.cpp

1.29

1.22

0.06

923.9

6597.0

9310.8

12020.7

2709.9

to_charptr_strf_tr.cpp

1.30

1.22

0.07

950.4

7103.9

9892.7

12689.7

2797.0

to_charptr_fmtlib_n_c.cpp

1.65

1.56

0.08

757.7

8541.6

11369.7

14183.8

2814.1

to_charptr_fmtlib_n.cpp

1.64

1.55

0.08

755.8

6518.1

9316.2

12122.5

2806.3

to_charptr_fmtlib_c.cpp

1.59

1.50

0.08

667.1

7748.4

10448.2

13138.2

2690.0

to_charptr_fmtlib.cpp

1.63

1.54

0.08

753.4

6487.9

9273.7

12063.6

2789.9

to_string_strf.cpp

1.35

1.27

0.07

1044.8

7362.2

10391.2

13416.4

3025.1

to_string_strf_tr.cpp

1.36

1.27

0.08

1064.7

7812.9

10894.1

13979.4

3085.4

to_string_fmtlib_c.cpp

1.62

1.52

0.09

768.5

8182.0

10938.1

13680.7

2742.6

to_string_fmtlib.cpp

1.65

1.56

0.08

790.2

6581.1

9393.8

12214.8

2821.0

to_FILE_strf.cpp

1.32

1.23

0.08

927.4

6619.4

9335.1

12055.1

2720.0

to_FILE_strf_tr.cpp

1.34

1.25

0.07

953.8

7114.9

9921.4

12719.8

2798.4

to_FILE_fmtlib.cpp

1.71

1.61

0.09

780.8

6714.7

9600.9

12487.2

2886.2

to_ostream_strf.cpp

1.40

1.31

0.08

937.7

6622.3

9334.3

12050.6

2716.3

to_ostream_strf_tr.cpp

1.43

1.34

0.08

964.6

7135.1

9934.0

12732.9

2799.0

to_ostream_fmtlib.cpp

1.67

1.58

0.08

764.6

6532.0

9310.4

12088.9

2778.5