diff options
author | Michael Lingelbach <m.j.lbach@gmail.com> | 2021-09-23 13:39:47 -0400 |
---|---|---|
committer | Michael Lingelbach <m.j.lbach@gmail.com> | 2021-09-26 00:35:55 -0700 |
commit | 30fed27241cc2a8f930212375f994a7fa6c99008 (patch) | |
tree | 37e5ebc68bfbc835021640fda72be82c0074506d /src/cjson/fpconv.h | |
parent | 8decc9f52d7dbd8eeed3afdf86f800b3677d25ab (diff) | |
download | rneovim-30fed27241cc2a8f930212375f994a7fa6c99008.tar.gz rneovim-30fed27241cc2a8f930212375f994a7fa6c99008.tar.bz2 rneovim-30fed27241cc2a8f930212375f994a7fa6c99008.zip |
feat(lua): expose lua-cjson as vim.json
* add vim.json.encode and vim.json.decode
* use vim.NIL instead of cjson.null
* resolve strict-prototypes warnings
* The following benchmark shows an approximately 2.5x (750 ms vs 300 ms) improvement in deserialization performance over
vim.fn.json_decode on a medium package.json
```lua
local uv = vim.loop
local function readfile(path)
return
end
local json_url = "https://raw.githubusercontent.com/rust-analyzer/rust-analyzer/b24c8d5c89ee93d1172b4127564f5da3b0c88dad/editors/code/package.json"
io.popen(string.format('curl -v -f -L -O %q &> /dev/null', json_url))
local json_string = io.open('package.json'):read '*a'
uv.update_time()
local start = uv.hrtime()
for i = 1,1000 do
vim.fn.json_decode(json_string)
end
uv.update_time()
print(string.format("Deserialization time vim.fn.json_decode: %s ms", (uv.hrtime() - start) * (1e-6)))
uv.update_time()
local start = uv.hrtime()
for i = 1,1000 do
vim.json.decode(json_string)
end
uv.update_time()
print(string.format("Deserialization time vim.json.decode: %s ms", (uv.hrtime() - start) * (1e-6)))
```
Co-Authored-By: Björn Linse <bjorn.linse@gmail.com>
Diffstat (limited to 'src/cjson/fpconv.h')
-rw-r--r-- | src/cjson/fpconv.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/cjson/fpconv.h b/src/cjson/fpconv.h index 7b0d0ee313..6ac97808b6 100644 --- a/src/cjson/fpconv.h +++ b/src/cjson/fpconv.h @@ -12,7 +12,7 @@ static inline void fpconv_init() /* Do nothing - not required */ } #else -extern void fpconv_init(); +extern void fpconv_init(void); #endif extern int fpconv_g_fmt(char*, double, int); |