Commit Graph

30 Commits

Author SHA1 Message Date
JCrawfy
7ba36b5e73 fix dumb bug in input randomiser, add basic double->string benchmarks
* input randomiser was feeding a constant value previously, now actually randomising
* start to_string with the current method (sstream), an faster more correct version (sstream_cached), snprintf, and std::to_chars
** NOTE: only std::to_chars and sstream_cached are correct in the face of locales

Run on (4 X 3500 MHz CPU s)
CPU Caches:
  L1 Data 32K (x4)
  L1 Instruction 32K (x4)
  L2 Unified 262K (x4)
  L3 Unified 6291K (x1)
-------------------------------------------------------------------------------------------------------------
Benchmark                                                                   Time             CPU   Iterations
-------------------------------------------------------------------------------------------------------------
RandFloatStrs/double_from_string_sstream                                 1012 ns         1001 ns       640000
RandFloatStrs/double_from_string_strtod                                   276 ns          276 ns      2488889
RandFloatStrs/double_from_string_strtod_fixed                             312 ns          308 ns      2133333
RandFloatStrs/double_from_string_strtod_fixed_const_ref                   307 ns          300 ns      2240000
RandFloatStrs/double_from_string_std_from_chars                           194 ns          188 ns      3733333
RandFloatCommaStrs/double_from_string_strtod_fixed_comma_ref              315 ns          314 ns      2240000
RandFloatCommaStrs/double_from_string_strtod_fixed_comma_const_ref        306 ns          305 ns      2357895
RandFloats/string_from_double_sstream                                    1372 ns         1381 ns       497778
RandFloats/string_from_double_sstream_cached                             1136 ns         1123 ns       640000
RandFloats/string_from_double_snprintf                                    536 ns          516 ns      1000000
RandFloats/string_from_double_std_to_chars                                116 ns          115 ns      6400000
2020-02-29 22:59:25 +13:00
JCrawfy
0adb8a69b1 add micro benchmarking project, setup number parsing benchmark
relating to previous work https://github.com/tfussell/xlnt/issues/422
Results are matching what was observed at the time ^^ was being worked on
std::from_chars is included as the target to beat, but since only MSVC has it for floating point it's not
hugely useful yet

uniform real distribution is probably a horrible choice, and it might be good to randomise the number
of sf in each string also (currently the y all end up at max length)

Run on (4 X 3500 MHz CPU s)
CPU Caches:
  L1 Data 32K (x4)
  L1 Instruction 32K (x4)
  L2 Unified 262K (x4)
  L3 Unified 6291K (x1)
----------------------------------------------------------------------------------------------------------
Benchmark                                                                Time             CPU   Iterations
----------------------------------------------------------------------------------------------------------
RandFloats/double_from_string_sstream                                  804 ns          820 ns       896000
RandFloats/double_from_string_strtod                                   163 ns          162 ns      5973333
RandFloats/double_from_string_strtod_fixed                             175 ns          172 ns      5352107
RandFloats/double_from_string_strtod_fixed_const_ref                   150 ns          152 ns      5352107
RandFloats/double_from_string_std_from_chars                          87.1 ns         88.3 ns      9557333
RandFloatsComma/double_from_string_strtod_fixed_comma_ref              172 ns          173 ns      5146257
RandFloatsComma/double_from_string_strtod_fixed_comma_const_ref        180 ns          175 ns      5352107
2020-02-29 22:11:31 +13:00
JCrawfy
ad7933d783 and another silent one... 2019-11-16 12:59:58 +13:00
JCrawfy
fa58994a14 add sheet load time benchmark 2019-11-16 11:25:29 +13:00
Crzyrndm
808765ea39 format as milliseconds 2018-07-29 15:11:19 +12:00
Crzyrndm
ba54f9eaa3 Reduce run-time of benchmark by 16x (160k to 10k cells) 2018-07-29 15:05:21 +12:00
Crzyrndm
138c90883b Modify writer benchmark to make comparisons between column and row usage
- Cut time to write a sheet with many rows by not calling highest_row inside a loop over the rows (On^2 -> On)
- Observation: more memory is used / cell as the number of rows increases
2018-07-29 10:11:00 +12:00
Thomas Fussell
0af7ad88e1 Merge branch 'tasmail-master-shared-strings-performance' into dev
remove less than comparators

fix conflicts
2018-07-23 00:10:16 -04:00
Andrii Tkachenko
f460bb2678 benchmarks. Rows/columns value/format performance. 2018-02-07 09:31:17 +01:00
Andrii Tkachenko
1aac106a40 Test of row/columns generation with random format. 2018-02-07 07:22:33 +01:00
Andrii Tkachenko
2459b336ef benchmarks. Format benchmarks added. Load formats and styles benchmarks added. 2018-02-05 12:33:26 +01:00
Andrii Tkachenko
f918c6cfaf benchmarks. Styles benchmarks updated with logs. Performance improved. 2018-02-05 10:51:01 +01:00
Andrii Tkachenko
1c50b35940 benchmarks. Styles benchmarks updated with logs. Performance improved. 2018-02-05 10:06:32 +01:00
Thomas Fussell
90633d0e8e copyright year bump (2018) 2018-01-22 09:38:48 -05:00
Thomas Fussell
f27df9732c add option to enable linking with static C runtime when compiling with MSVC, #214 2017-09-13 10:20:51 -04:00
Thomas Fussell
7ed14246b2 clean up cmake files and add d suffix to xlnt debug library, closes #214 2017-09-08 14:33:18 -04:00
Thomas Fussell
104e3bea25 clean up samples and benchmarks, data handling 2017-04-13 20:18:32 -04:00
Thomas Fussell
b85680c5ed start rewiring tests 2017-04-13 19:01:30 -04:00
Thomas Fussell
05fb40438c Merge branch 'master' of github.com:tfussell/xlnt 2017-04-11 17:57:56 -04:00
Thomas Fussell
9fa9343d89 fix some stuff 2017-04-11 17:49:07 -04:00
Thomas Fussell
c448536e38 change benchmark call away from removed cell method, fix benchmark warnings 2017-03-21 19:14:27 -04:00
Thomas Fussell
c87fdb1a1a link zlib to samples and benchmarks as a temporary workaround 2017-03-05 23:08:32 -05:00
Thomas Fussell
533a20bdc3 fix samples cmake lists 2017-03-05 22:59:55 -05:00
Thomas Fussell
0aa26019e2 clean up cmake lists 2017-03-05 22:39:27 -05:00
Thomas Fussell
ba533688c3 update samples and benchmarks build, work on ci scripts 2017-02-28 00:07:37 -05:00
Thomas Fussell
838f358f34 make benchmarks show something useful 2016-12-04 12:20:12 +01:00
Thomas Fussell
07a197cd31 fix up benchmarks a bit 2016-12-03 16:31:30 +01:00
Thomas Fussell
b42697e4cb begin working on benchmarks for #29 2016-12-03 12:13:17 +01:00
Thomas Fussell
c49341c82f clean up cmake build, fix warnings, improve configuration, general
housekeeping, fixes #72, fixes #70
2016-10-25 20:22:22 -04:00
Thomas Fussell
a8be9fff32 start porting benchmarks 2016-02-06 10:04:41 -05:00