Comments (3)
Currently ParseErrorCode
set is not complete.
By a explicit state machine implementation(branch TransitionTable
), all errors can be captured on every transition to the error state.
from rapidjson.
Progress report:
Most of the functions have been implemented. Except that "May add a configurable limit of tree depth". I am considering adding a configurable limit on parsing stack size instead.
The state transitions are through unittested.
I also have a brief performance test for current implementation(36434b6).
On a i5 2400, 4GB Windows 7 x64 machine, with release32 build:
RapidJson.ReaderParse_DummyHandler_SSE42 (590 ms)
RapidJson.ReaderParseInsitu_DummyHandler_SSE42 (543 ms)
RapidJson.ReaderParseIterative_DummyHandler_SSE42 (656 ms)
RapidJson.ReaderParseIterativeInsitu_DummyHandler_SSE42 (503 ms)
I do not have a good explanation for these results. I guess change of memory access pattern may be the major cause.
A significant change is that the iterative parser will push state to the internal stack(GenericReader::stack_
), which was only used for string parsing(GenericReader::ParseString
) before.
I tried to separate the state stack, but did not see any impact on performance.
from rapidjson.
On an Intel(R) Core(TM) i7-3520M CPU @ 2.90GHz, Linux 64-bit, GCC 4.8, I see the following:
- [ OK ] RapidJson.ReaderParseInsitu_DummyHandler_SSE42 (550 ms)
[ OK ] RapidJson.ReaderParseIterativeInsitu_DummyHandler_SSE42 (410 ms) - [ OK ] RapidJson.ReaderParse_DummyHandler_SSE42 (803 ms)
[ OK ] RapidJson.ReaderParseIterative_DummyHandler_SSE42 (744 ms)
So it seems to be quite compiler-specific.
(The ordering of the tests could be more convenient to compare the variants, though).
from rapidjson.
Related Issues (20)
- The performance on ubuntu and centos is much worse than on windows?
- IStreamWrapper does not recognize special characters like € or korean chars HOT 2
- 编译报错 HOT 1
- Double serialization precision is not IEEE 754-compliant
- New release tag version HOT 1
- `qt5-location` fails to build when devel version of `rapidjson` installed (?)
- Visual Studio 2022 (using /std:c++20) new warning HOT 2
- Throw exception in functions which is specified as noexcept
- 在多进程中使用共享内存传输rapidjson时出现数据读取错误的问题
- 源码请教
- Cmake 3.5 deprecation warning HOT 1
- Build fails on macOS due to Include/rapidjson/msinttypes/stdint.h HOT 2
- Writer always prints decimals when a float or double is used
- Error:/rapidjson/document.h:2334:15: error: expected unqualified-id before ‘bool’ HOT 4
- New version for googletest HOT 1
- reuse the json object, only revise some keywords, best formance for generate a json string?
- performace comparison between snprintf and rapidjson wirter? HOT 2
- Deserialization fails on invalid unicode code point
- Stack overflow on rapidjson HOT 3
- Invalid static_cast in regex.h
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from rapidjson.