Commit Graph

96 Commits

Author SHA1 Message Date
Maurice Makaay 0c057e4a9a Split up the api.go into three files: api.go, api_input.go and api_output.go. This makes it easier to manage the individual code sets. 2019-07-20 00:48:11 +00:00
Maurice Makaay 93c75af87f Moved Input and Output related fields from the API to their respective sub-structs. 2019-07-20 00:28:37 +00:00
Maurice Makaay 7d2d8dbed3 Moved input-related functions to their own API.Input struct. 2019-07-19 23:41:15 +00:00
Maurice Makaay 9d98c9dff7 Moving output functions to its own substruct of the API. 2019-07-19 22:57:06 +00:00
Maurice Makaay 458d6f60a6 A nice performance gain by making a difference between AcceptRunes/AcceptBytes and the new simpler AcceptRune/AcceptByte functions. The simpler versions are faster when only accepting a single byte or rune (which is the case in most situations). 2019-07-19 21:13:15 +00:00
Maurice Makaay 9a53ea9012 Working on API speed. 2019-07-19 14:44:44 +00:00
Maurice Makaay 31055a3cd3 Bugfix for parsekit.read: when filling the buffer, the read offset was not taken into account for determining how many bytes could be read. 2019-07-19 10:13:32 +00:00
Maurice Makaay 3f9c745ac4 Unit tests improved for the parsekit.read package. 2019-07-19 09:50:42 +00:00
Maurice Makaay 22bcf4677e Some work on simlifying the reader code, to see if I can squeeze some more performance out of that part. 2019-07-19 08:47:13 +00:00
Maurice Makaay 1771e237c0 Switched to a []byte backing store instead of []rune for collecting input data (we can use both bytes and runes for input in an easy way now) 2019-07-18 09:26:11 +00:00
Maurice Makaay b9eeac3480 Work in progress on switching to byte stack. Committing to do some performance checks against master. 2019-07-18 08:06:26 +00:00
Maurice Makaay e659380a5f Implemented an efficient M.DropUntilEndOfLine handler, which is now used in the TOML parser for a dramatic speed increase on comment parsing. 2019-07-17 23:51:37 +00:00
Maurice Makaay 64f92696b2 Fixed unit tests for the new allocation behavior. 2019-07-17 23:03:14 +00:00
Maurice Makaay 0a4e44b8f8 Allow for bufio Readers that deliver data in chunks (like our unit test Reader) 2019-07-17 23:03:00 +00:00
Maurice Makaay 6d3eacdcae Allocate read buffer in 1024 byte chunks, and read the data in chunks as well. This is more efficient than reading byte by byte. 2019-07-17 22:12:37 +00:00
Maurice Makaay 5e3e4b0f0a Yay! First version for which parsing long.toml drops below 100ms! Got an outcome of 93ms. Almost down to BurntSushi's speed level, but still with a generic parser backing. Looking good!! 2019-07-16 23:34:01 +00:00
Maurice Makaay ddd0ed49f6 Don't resize the stack slices, since we keep track of their starts and ends anyway. 2019-07-16 12:19:50 +00:00
Maurice Makaay 06faabdfe2 Small bugfix for the rune-to-byte-fallback code and added byte-support to the Str and StrNoCase matchers. 2019-07-16 07:35:06 +00:00
Maurice Makaay 4cfdbafa6e Further switching to byte-based input handling. 2019-07-16 07:05:10 +00:00
Maurice Makaay 0362763e83 Switched to byte input for built-in tokenize.Handler functions. 2019-07-15 22:48:00 +00:00
Maurice Makaay d4492e4f0a Bytes reader working, now carry on switching to byte reading in the tokenizer code. 2019-07-15 20:03:05 +00:00
Maurice Makaay 17935b7534 Further performance optimization and code cleanup. 2019-07-12 21:32:40 +00:00
Maurice Makaay 56b8df3aab Removed loop protection code. This is useful, but it puts a performance burden on the code when doing it by keeping track of actual callers through the call stack. Maybe to be reintroduced in a future version with something like a simple counter and a maximum depth-style protection. 2019-07-12 12:33:18 +00:00
Maurice Makaay 09746c0d2e Speeding up the code some more. Big step was made by simplifying the cursor, continuing with that in the next commit. 2019-07-12 08:02:04 +00:00
Maurice Makaay 7116aa47df Squishing out more performance. 2019-07-12 00:21:02 +00:00
Maurice Makaay a4eda45d2c Made all unit tests work again. 2019-07-11 14:55:08 +00:00
Maurice Makaay 3c9a678d7a Fixed the ModifyDrop() behavior. It worked, but it caused memory build-up in the old implementation. 2019-07-11 14:52:12 +00:00
Maurice Makaay c532af67ca Optimization round completed (for now :-) All tests successful. 2019-07-11 12:43:57 +00:00
Maurice Makaay 7598b62dd0 Finalized the work-through of the new version of the tokenizer code. 2019-07-10 20:36:21 +00:00
Maurice Makaay 48d7fda9f8 New implementation for performance. 2019-07-10 11:26:47 +00:00
Maurice Makaay 7795588fe6 Speed improvement work. 2019-07-08 21:57:32 +00:00
Maurice Makaay 5fa0b5eace Backup work on performance improvements. 2019-07-08 14:31:01 +00:00
Maurice Makaay 23ca3501e1 Backup changes for performance fixes. 2019-07-08 00:12:30 +00:00
Maurice Makaay 7bc7fda593 Backup changes for performance fixes. 2019-07-05 15:07:07 +00:00
Maurice Makaay 5e9879326a Backup work to performance tuning. 2019-07-05 08:08:42 +00:00
Maurice Makaay 583197c37a Made a distinction between MatchWhitespace() and MatchUnicodeSpace(). 2019-07-04 11:32:07 +00:00
Maurice Makaay d96511ce0a Backup work. 2019-07-03 15:46:43 +00:00
Maurice Makaay 92e6eec7f3 implemented Cursor.moveByRune(), to get rid of some useless rune->string conversion for updating cursor positions. 2019-06-30 10:16:46 +00:00
Maurice Makaay 4b0309453f Added a feature to run the parser without any of the built-in sanity checks (like loop checks). This improved performance, but at the risk of missing some runtime issues with the parser implementation. 2019-06-30 01:05:54 +00:00
Maurice Makaay 7ce12d1632 A few small changes used for TOML support. 2019-06-23 12:06:31 +00:00
Maurice Makaay 5904da9677 Added some package docs. 2019-06-18 22:52:17 +00:00
Maurice Makaay 2293627232 Small code cleanup things, mainly backing up the changes. 2019-06-18 15:46:09 +00:00
Maurice Makaay 99654c2f9e Simplified some internal code, which also fixes a bug with correct error reporting from within parsekit in various edge cases. 2019-06-17 13:59:31 +00:00
Maurice Makaay cdfc4ce52c More documentation and examples. 2019-06-12 16:17:13 +00:00
Maurice Makaay 1a280233b0 Got rid of the testify dependency. My testing needs are so basic, that there's no need for this full fledged testing library. 2019-06-12 15:25:15 +00:00
Maurice Makaay cef6ae1bc4 Working on documentation. 2019-06-12 15:24:09 +00:00
Maurice Makaay 27c97ae902 Big overhaul on separating packages for code containment. 2019-06-12 14:30:46 +00:00
Maurice Makaay 1f0e0fcc17 Splitting up functionality in packages, intermediate step. 2019-06-11 22:23:30 +00:00
Maurice Makaay 0f7b4e0d26 Added a few syntactic sugar methods for ParseHandler. 2019-06-11 09:09:41 +00:00
Maurice Makaay 65895ac502 Making parsekit.reader both simpler and more complex (more complex by adopting some buffer allocation logic from the built-in bytes package, to not be copying memory all the time during the read operations. 2019-06-09 21:55:01 +00:00