John Keiser
d9929edbc1
Run -Weffc++ in CI
2020-06-23 13:44:25 -07:00
Daniel Lemire
49d70232f8
Merge pull request #969 from simdjson/dlemire/minor_pre0.4_cleaning
...
Very minor cleaning.
2020-06-23 14:30:47 -04:00
John Keiser
257089884f
Merge pull request #958 from simdjson/jkeiser/is
...
Make simdjson_result<element>.is() return bool
2020-06-23 09:51:37 -07:00
John Keiser
c650ea9765
Merge pull request #960 from simdjson/jkeiser/idiomatic-get
...
Convert simdjson to use .get()
2020-06-23 09:49:41 -07:00
John Keiser
e369d45b9c
Fix non-compileable examples
2020-06-23 09:48:17 -07:00
John Keiser
2d84b6f6d9
Make simdjson_result<element>.is() return bool
2020-06-23 09:09:24 -07:00
John Keiser
eef1171944
Merge pull request #954 from simdjson/jkeiser/parse-many-result
...
Return error from parse_many
2020-06-23 09:06:20 -07:00
Daniel Lemire
f1a03bfb04
Very minor cleaning.
2020-06-23 11:05:58 -04:00
Daniel Lemire
33e003616d
Fixing the name of the variable
2020-06-22 16:29:38 -04:00
Daniel Lemire
bf03d77ab9
Passing by value the string_view
2020-06-22 16:28:35 -04:00
Daniel Lemire
d6f056f266
Fixing documentation issues.
2020-06-22 16:17:11 -04:00
Daniel Lemire
a76c67c19f
Fixing...
2020-06-22 15:57:54 -04:00
John Keiser
1ff55c2729
Replace auto [x,error] with .get() everywhere
2020-06-21 16:26:59 -07:00
Daniel Lemire
5dbcdf1484
Ok
2020-06-21 17:52:30 -04:00
Daniel Lemire
f03a6ab5a4
Tweaking.
2020-06-21 17:39:24 -04:00
John Keiser
6fa5abcd7e
Replace x.get<T>() with x.get(v) or T(x)
2020-06-21 14:36:38 -07:00
Daniel Lemire
5dc07ed295
It builds.
2020-06-21 17:20:33 -04:00
John Keiser
1b1a122b1f
Fix copy constructor issue on older gcc
2020-06-21 12:06:14 -07:00
John Keiser
ae1bd891e7
Remove deprecated uses of parse_many
2020-06-21 11:19:06 -07:00
John Keiser
9899e5021d
Allow use of document_stream with tie()
2020-06-20 21:15:05 -07:00
John Keiser
94440e0170
Return simdjson_result from load_many/parse_many
2020-06-20 20:51:53 -07:00
John Keiser
a7fc7d4ffb
Switch from get(v,e) to e = get(v)
2020-06-20 17:57:09 -07:00
John Keiser
56e2b38048
Add bool result from tie()/get(), get<T>(T&,error_code&)
2020-06-20 17:55:46 -07:00
John Keiser
1d8c2d6c22
Make get_xxx the primary functions
2020-06-20 13:29:12 -07:00
John Keiser
0b8c357eff
Add get_X and is_X methods
2020-06-19 13:27:33 -07:00
John Keiser
05bc664c11
Don't extend from tape_ref in public classes
2020-06-19 13:25:52 -07:00
Daniel Lemire
c13c2650a2
Merge pull request #940 from simdjson/issue938
...
Verifying (and fixing) issue 938
2020-06-18 18:25:31 -04:00
Daniel Lemire
2f6091419f
Merge pull request #944 from simdjson/issue680
...
Document the complexity of array.at
2020-06-18 18:24:08 -04:00
Daniel Lemire
2022dd7d74
Merge pull request #945 from simdjson/issue678
...
Fixing issue 678
2020-06-18 18:23:56 -04:00
Daniel Lemire
ef688a74fe
Minor tweak to the documentation.
2020-06-18 18:18:12 -04:00
Daniel Lemire
04a19f9813
Fixes https://github.com/simdjson/simdjson/issues/937
2020-06-17 18:06:13 -04:00
Daniel Lemire
2cbc591c9d
Fixing issue 678
2020-06-17 16:17:17 -04:00
Daniel Lemire
3586fc4910
Fix for issue 680
2020-06-17 18:49:22 +00:00
Daniel Lemire
0b9df6d8c4
It turns out that we need fairly complicated logic.
2020-06-17 15:17:10 +00:00
Daniel Lemire
803b0c4bdb
Light touch.
2020-06-17 11:00:13 -04:00
Daniel Lemire
0d4e501239
Fixing the bug.
2020-06-17 10:06:16 -04:00
John Keiser
fd44c2a2ff
Merge pull request #927 from simdjson/dlemire/exposingthestringminifier
...
Exposing the string minifier.
2020-06-13 07:47:20 -07:00
John Keiser
a86a82b39c
Rename minify class to minifier so the minify() method is cleared up
2020-06-12 17:05:25 -07:00
Daniel Lemire
4dfbf98e4e
Using a worker instead of a thread per batch ( #920 )
...
In the parse_many function, we have one thread doing the stage 1, while the main thread does stage 2. So if stage 1 and stage 2 take half the time, the parse_many could run at twice the speed. It is unlikely to do so. Still, we see benefits of about 40% due to threading.
To achieve this interleaving, we load the data in batches (blocks) of some size. In the current code (master), we create a new thread for each batch. Thread creation is expensive so our approach only works over sizeable batches. This PR improves things and makes parse_many faster when using small batches.
This fixes our parse_stream benchmark which is just busted.
This replaces the one-thread per batch routine by a worker object that reuses the same thread. In benchmarks, this allows us to get the same maximal speed, but with smaller processing blocks. It does not help much with larger blocks because the cost of the thread create gets amortized efficiently.
This PR makes parse_many beneficial over small datasets. It also makes us less dependent on the thread creation time.
Unfortunately, it is going to be difficult to say anything definitive in general. The cost of creating a thread varies widely depending on the OS. On some systems, it might be cheap, in others very expensive. It should be expected that the new code will depend less drastically on the performances of the underlying system, since we create juste one thread.
Co-authored-by: John Keiser <john@johnkeiser.com>
Co-authored-by: Daniel Lemire <lemire@gmai.com>
2020-06-12 16:51:18 -04:00
John Keiser
bbd61eb13f
Let tape writing be put in a register
2020-06-12 09:18:20 -07:00
Daniel Lemire
a6e4933d93
Exposing the string minifier.
2020-06-11 13:07:18 -04:00
John Keiser
fe01da077e
Make threaded version work again
2020-06-07 16:21:00 -07:00
John Keiser
d43a4e9df9
Remove SUCCESS_AND_HAS_MORE (internal only value)
2020-06-07 16:20:55 -07:00
John Keiser
ef63a84a3e
Move document stream state to implementation
2020-06-07 16:20:44 -07:00
Daniel Lemire
7a69da16e4
Fixing issue 906 ( #912 )
...
* Fixing issue 906
* Safe patching.
* Now with explanations.
* Bumping up memory allocation.
* Putting the patch back.
* fallback fixes.
Co-authored-by: Daniel Lemire <lemire@gmai.com>
2020-06-05 15:37:09 -04:00
John Keiser
b75fa26dc1
Move containing_scope and ret_address to .cpp
2020-06-01 12:15:55 -07:00
John Keiser
3d22a2d845
One weird trick: set a bogus error value in the parser impl
...
This makes us faster under both gcc and clang somehow.
2020-06-01 12:15:55 -07:00
John Keiser
1aab4752e2
Store all parser state in the implementation
2020-06-01 12:15:54 -07:00
John Keiser
6a71b24495
Reuse stored buf and len from parser
2020-06-01 12:14:09 -07:00
John Keiser
a3a9bde83e
Move DOM parsing into concrete interface implementation
2020-06-01 12:14:09 -07:00