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
Thomas Fussell
8014e2fe19
update miniz to 2.1, move to third-party
2019-12-26 12:51:02 -05:00
Thomas Fussell
54e7c1df3d
update libstudxml to 1.1.0-b.8
2019-12-26 12:49:05 -05:00
Thomas Fussell
fcc2f0dddf
bump version to 1.4
2019-12-26 12:13:29 -05:00
Thomas Fussell
a560756b35
use clang-format, fix some small warnings
2019-12-26 12:03:12 -05:00
Thomas Fussell
dbc0ddd9bf
Merge pull request #413 from mattparks/patch-1
...
Check for existing uninstall target before creating.
2019-12-19 17:07:00 -05:00
Thomas Fussell
e2262a0c65
Merge pull request #421 from Crzyrndm/experimental/sheet-data-parser
...
Accelerated worksheet parsing
2019-12-19 16:24:51 -05:00
Thomas Fussell
edb27e84f8
Merge pull request #425 from yschungmr/hotfix/gcc-5-build-bug
...
Fixed gcc 5 build bug
2019-12-19 16:13:48 -05:00
Johann1994
d6262df555
Shared strings
...
It can happen that some strings are not unique in sharedstring table
2019-12-18 13:53:23 +01:00
Johann1994
49663bc483
Sharedstringtable
...
Same strings in shared stringtable makes it not possible to open a xlsx file.
2019-12-18 13:50:34 +01:00
Youngsuk Chung
8e2f197f70
Fix indentation
2019-12-09 14:52:07 +09:00
Youngsuk Chung
c8bda73f01
Fix g++-5 build bug ( Fix #385 )
...
Tested on g++ (Ubuntu 5.4.0-6ubuntu1~16.04.12) 5.4.0 20160609
Note: Actually,it is not a BUG. It is compiler related issue. The issue #385 is not shown in g++-6 and clang.
2019-12-09 14:46:12 +09:00
JCrawfy
f2ad495326
resolve warnings, remove failing test (CI doesn't know what locale "de-DE" is?)
2019-11-18 21:45:46 +13:00
JCrawfy
613d7b6086
add missing include
2019-11-18 21:39:33 +13:00
JCrawfy
97841413fa
fixed more parsing errors, added test for ',' locale serialisation (it fails...)
2019-11-18 21:12:21 +13:00
JCrawfy
a25187f788
fix using attribute<double> (causes bugs when '.' is not the decimal separator
2019-11-18 20:46:34 +13:00
JCrawfy
7621b2807a
fix wrong iterator bug
2019-11-18 20:43:58 +13:00
JCrawfy
d69a5dea75
scan and replace '.' with ',' when decimal separator is comma
2019-11-18 19:55:13 +13:00
JCrawfy
2eb88c23d6
move numeric utils into the public headers
...
resolves #398
2019-11-18 19:25:02 +13:00
JCrawfy
a6fd7cc2b8
skip the user facing types, deal direct with the impls
...
this was being done already in most cases, and allows some simplification
e.g. no need to check if something is already present, since we're starting with a blank
2019-11-17 13:15:00 +13:00
JCrawfy
2b61cac3dc
move helper functions and types to top of file ( namespace {} )
2019-11-17 11:55:49 +13:00
JCrawfy
600cc9d000
specialised string equality template for literals strings
...
1-2% improvement seen locally
2019-11-17 11:11:33 +13:00
JCrawfy
001606a77c
cleanup and comments
2019-11-17 10:41:05 +13:00
JCrawfy
2307ed4edf
exceptions, not asserts
2019-11-16 19:49:17 +13:00
JCrawfy
a580079702
and more warnings suppressed
2019-11-16 15:03:28 +13:00
JCrawfy
96beae421f
matchup integer types
2019-11-16 14:49:58 +13:00
JCrawfy
9d687eaf49
remove all usages of strtod_c
2019-11-16 14:30:40 +13:00
JCrawfy
e059d259c7
specialise number_converter when strtod_l is available
...
in load benchmark, not using the specialisation adds ~10% to execution time
2019-11-16 14:18:33 +13:00
JCrawfy
ea532c5c46
resolve some warnings
2019-11-16 14:16:45 +13:00
JCrawfy
ad7933d783
and another silent one...
2019-11-16 12:59:58 +13:00
JCrawfy
c26a59f32e
fix compile error due to reference to r-value that MSVC silently lifetime extended
2019-11-16 12:49:26 +13:00
JCrawfy
ec29e227d4
slightly optimise cell parsing routine, fix formula being incorrectly loaded
2019-11-16 12:17:07 +13:00