Commit Graph

1548 Commits

Author SHA1 Message Date
JCrawfy
d30e705f83 fix most (all?) the places where string<->double conversions are performed
strod / stod / to_string and all related friends are dependant on current locale for how they format a number
2020-04-25 14:00:58 +12:00
JCrawfy
dfb8f1518e Revert "redo serialisation by using a sorted vector instead of a lookup for each possible row/column combination"
This reverts commit 63484f8b8f.
2020-04-25 11:15:23 +12:00
JCrawfy
63484f8b8f redo serialisation by using a sorted vector instead of a lookup for each possible row/column combination
Not tested, definitely not as correct as previous implementation
2020-04-25 11:00:39 +12:00
JCrawfy
9136d21845 move the simplified cell_reference and cell structs out to a header
the standard xlnt::cell and xlnt::cell_reference have plenty of extra functionality that just slows things down during (de)serialisation
These intermediate structs can be used to minimise overhead before transforming to the final type
2020-04-25 11:00:39 +12:00
JCrawfy
1069c17fbe fixup comment in parser 2020-04-25 11:00:39 +12:00
JCrawfy
e8e29e9c18 resolve some warnings (unintialised variables), remove warning suppression 2020-04-25 11:00:39 +12:00
Thomas Fussell
d1d9553d4e
Merge pull request #454 from Tectu/master
Remove superfluous semicolon
2020-03-25 14:16:20 -04:00
Joel Bodenmann
4e0333ac91 Remove superfluous semicolon 2020-03-25 13:16:02 +01:00
Thomas Fussell
568ac85346
release v1.5.0 2020-03-21 15:19:37 -04:00
Thomas Fussell
05fb0ceaf6
revert version bump 2020-03-21 15:18:59 -04:00
Thomas Fussell
80b94549a7
edit version bump path 2020-03-21 15:16:20 -04:00
Thomas Fussell
7c0d64248c
move release files to root for now 2020-03-21 15:15:32 -04:00
Thomas Fussell
b118d8f1f2
bump version to 1.5.0 2020-03-21 15:13:22 -04:00
Thomas Fussell
7e1e8cb1a1
release v1.5.0 2020-03-21 14:58:12 -04:00
Thomas Fussell
c3a1f1da95
fix release name 2020-03-21 14:57:06 -04:00
Thomas Fussell
0f178e46c8
fix release title 2020-03-21 14:52:26 -04:00
Thomas Fussell
138fb967bc
improve consistency with previous releases 2020-03-21 14:49:58 -04:00
Thomas Fussell
0a2a618663
Merge pull request #452 from tfussell/automate-releases
Automate releases
2020-03-21 14:40:49 -04:00
Thomas Fussell
a07c8c0c10
flesh out package.json [ci skip] 2020-03-21 14:39:22 -04:00
Thomas Fussell
8e451f24e3
empty commit [ci skip] 2020-03-21 14:36:57 -04:00
Thomas Fussell
92577d6cac
update github deploy token 2020-03-21 14:36:45 -04:00
Thomas Fussell
5602edbd2d
add packaging and release deployment workflow 2020-03-21 14:25:39 -04:00
Thomas Fussell
9a18cd9fcd
disable npm 2020-03-21 11:02:03 -04:00
Thomas Fussell
252dd76616
initial implementation 2020-03-21 10:59:00 -04:00
Thomas Fussell
2f5934f60e
Merge pull request #447 from Crzyrndm/feature/benchmark
microbenchmarks for double<->string conversion, serialisation improvements
2020-03-20 18:02:37 -04:00
Thomas Fussell
6c52e52487
Merge pull request #451 from amiremohamadi/fix-cell-reference-parsing
fix cell reference parsing
2020-03-20 16:16:40 -04:00
amiremohamadi
3af9567946 fix-bug: set absolute flags correctly 2020-03-20 23:08:27 +03:30
amiremohamadi
33a56b3a04 add more tests for absolute and relative column, row forms 2020-03-20 23:06:58 +03:30
JCrawfy
f4d00acb9f resolve warnings 2020-03-02 13:32:39 +13:00
JCrawfy
e8cb8d9bc6 fix compiler error 2020-03-01 23:23:20 +13:00
JCrawfy
0ea054026f speedup worksheet::calculate dimension by only looping the cell map once 2020-03-01 23:20:44 +13:00
JCrawfy
c418c13010 remove a double lookup in the cell map during serialisation 2020-03-01 23:18:13 +13:00
JCrawfy
932fc4596f remove declarations of copy/assignment operators that only do default work
user defined copy operators suppress compiler creation of move operations, and not having all of copy/move/dtor
defined (rule of 0/5) is suspicious. Also happens to be very slightly slower
2020-03-01 23:16:57 +13:00
JCrawfy
39f498f401 use the new faster serialisation everywhere in xlsx_producer 2020-03-01 22:01:53 +13:00
JCrawfy
ee593c2673 bug fixes, move the faster serialisation into the numeric header
serialisation ends up roughly 2x improvement going from sstream to snprintf

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                                  968 ns          977 ns       640000
RandFloatStrs/double_from_string_strtod                                   272 ns          270 ns      2488889
RandFloatStrs/double_from_string_strtod_fixed                             272 ns          270 ns      2488889
RandFloatStrs/double_from_string_strtod_fixed_const_ref                   273 ns          270 ns      2488889
RandFloatStrs/double_from_string_std_from_chars                           193 ns          195 ns      3446154
RandFloatCommaStrs/double_from_string_strtod_fixed_comma_ref              272 ns          273 ns      2635294
RandFloatCommaStrs/double_from_string_strtod_fixed_comma_const_ref        276 ns          273 ns      2635294
RandFloats/string_from_double_sstream                                    1311 ns         1318 ns       497778
RandFloats/string_from_double_sstream_cached                             1076 ns         1050 ns       640000
RandFloats/string_from_double_snprintf                                    601 ns          600 ns      1120000
RandFloats/string_from_double_snprintf_fixed                              600 ns          600 ns      1120000
RandFloats/string_from_double_std_to_chars                                117 ns          117 ns      5600000
RandFloatsComma/string_from_double_snprintf_fixed_comma                   600 ns          600 ns      1120000
2020-03-01 22:01:14 +13:00
JCrawfy
fbbf7ae767 fix git revert error 2020-03-01 20:46:19 +13:00
JCrawfy
0915fde090 add saving to the spreadsheet-load test, fix a bug in the serialiser 2020-03-01 20:43:56 +13:00
JCrawfy
d135f35bd4 minor cleanup 2020-03-01 20:24:22 +13:00
JCrawfy
a5aca5c212 add the fixed snprintf serialiser
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                                  969 ns          977 ns       640000
RandFloatStrs/double_from_string_strtod                                   274 ns          270 ns      2488889
RandFloatStrs/double_from_string_strtod_fixed                             273 ns          273 ns      2635294
RandFloatStrs/double_from_string_strtod_fixed_const_ref                   274 ns          276 ns      2488889
RandFloatStrs/double_from_string_std_from_chars                           193 ns          193 ns      3733333
RandFloatCommaStrs/double_from_string_strtod_fixed_comma_ref              273 ns          267 ns      2635294
RandFloatCommaStrs/double_from_string_strtod_fixed_comma_const_ref        273 ns          273 ns      2635294
RandFloats/string_from_double_sstream                                    1323 ns         1311 ns       560000
RandFloats/string_from_double_sstream_cached                             1074 ns         1074 ns       640000
RandFloats/string_from_double_snprintf                                    519 ns          516 ns      1000000
RandFloats/string_from_double_snprintf_fixed                              517 ns          516 ns      1000000
RandFloats/string_from_double_std_to_chars                                118 ns          117 ns      5600000
RandFloatsComma/string_from_double_snprintf_fixed_comma                   520 ns          516 ns      1120000
2020-02-29 23:10:38 +13:00
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
Thomas Fussell
ae6f9d2324
Merge pull request #446 from adamhooper/issue-445
Parse inlineStr values
2020-02-26 13:28:46 -05:00
Adam Hooper
ac18fc6dde Parse inlineStr values
inlineStr XML structure is <c><is><t>. This was being parsed incorrectly
when streaming (because has_value wasn't being set to true) and when
reading the whole file (because the <t> was ignored).

[closes #445]
2020-02-25 14:32:14 -05:00
Thomas Fussell
0d1d85f181 Merge pull request #432 from tfussell/format
Format, update dependencies, fix warnings
2020-02-08 13:36:26 -05:00
Thomas Fussell
e8ee585897
bump copyright year to 2020 2020-02-08 12:12:59 -05:00
Thomas Fussell
5a2498c229
fix windows build 2020-02-08 12:09:22 -05:00
Thomas Fussell
53b2853ae3
Merge branch 'master' into format 2020-02-08 12:03:40 -05:00
Thomas Fussell
85e6878cc4
bump version to 1.4 to match latest release, for #334 2020-02-08 11:48:50 -05:00
Thomas Fussell
39503e8bf0 fix warnings and other minor issues 2019-12-26 12:52:14 -05:00
Thomas Fussell
1a0c61f5b0 update utfcpp to 3.1 2019-12-26 12:51:52 -05:00