Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Another (smaller) performance optimization for the JSON parser. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
c43daa8c78df99f62dd4d3c83708a3a8 |
User & Date: | drh 2015-09-24 01:40:45.848 |
Context
2015-09-24
| ||
11:06 | Fix a JSON1 test case so that it works on builds that omit virtual tables. (check-in: a4444c0f66 user: drh tags: trunk) | |
01:40 | Another (smaller) performance optimization for the JSON parser. (check-in: c43daa8c78 user: drh tags: trunk) | |
01:06 | Performance optimizations on the JSON parser. (check-in: 7dd4b07a42 user: drh tags: trunk) | |
Changes
Changes to ext/misc/json1.c.
︙ | ︙ | |||
645 646 647 648 649 650 651 | static int jsonParseValue(JsonParse *pParse, u32 i){ char c; u32 j; int iThis; int x; JsonNode *pNode; while( safe_isspace(pParse->zJson[i]) ){ i++; } | | < | 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 | static int jsonParseValue(JsonParse *pParse, u32 i){ char c; u32 j; int iThis; int x; JsonNode *pNode; while( safe_isspace(pParse->zJson[i]) ){ i++; } if( (c = pParse->zJson[i])=='{' ){ /* Parse object */ iThis = jsonParseAddNode(pParse, JSON_OBJECT, 0, 0); if( iThis<0 ) return -1; for(j=i+1;;j++){ while( safe_isspace(pParse->zJson[j]) ){ j++; } x = jsonParseValue(pParse, j); if( x<0 ){ |
︙ | ︙ | |||
766 767 768 769 770 771 772 773 774 775 776 777 778 779 | jsonParseAddNode(pParse, seenDP ? JSON_REAL : JSON_INT, j - i, &pParse->zJson[i]); return j; }else if( c=='}' ){ return -2; /* End of {...} */ }else if( c==']' ){ return -3; /* End of [...] */ }else{ return -1; /* Syntax error */ } } /* ** Parse a complete JSON string. Return 0 on success or non-zero if there | > > | 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 | jsonParseAddNode(pParse, seenDP ? JSON_REAL : JSON_INT, j - i, &pParse->zJson[i]); return j; }else if( c=='}' ){ return -2; /* End of {...} */ }else if( c==']' ){ return -3; /* End of [...] */ }else if( c==0 ){ return 0; /* End of file */ }else{ return -1; /* Syntax error */ } } /* ** Parse a complete JSON string. Return 0 on success or non-zero if there |
︙ | ︙ |