Skip to content

v0.4.4

Choose a tag to compare

@pardnchiu pardnchiu released this 16 Apr 02:12
· 10 commits to master since this release

v0.4.3 -> v0.4.4

Summary

Cache parsed JSON objects in Entry to eliminate repeated json.Unmarshal on read/query hot paths, and make Entry.value unexported to enforce cache consistency at compile time.

翻譯 在 Entry 中快取已解析的 JSON 物件,消除讀取與查詢熱路徑的重複 json.Unmarshal,並將 Entry.value 私有化以在編譯期強制快取一致性。

Changes

PERF

  • Cache deserialized JSON in Entry.parsed field, populated on Set() and AOF replay via parseCached()
  • Replace per-call json.Unmarshal with cached lookup in GetField, SetField, IncrField, DelField, and Query
  • Trade-off: JSON entries use ~2x memory (raw string + parsed object), non-JSON entries have zero overhead
翻譯
  • Entry.parsed 欄位快取已解析的 JSON,透過 parseCached()Set() 和 AOF replay 時填充
  • GetFieldSetFieldIncrFieldDelFieldQuery 中的逐次 json.Unmarshal 替換為快取查詢
  • 代價:JSON entry 記憶體約 2 倍(raw string + parsed object),非 JSON entry 零開銷

REFACTOR

  • Make Entry.Value unexported (value) — all reads go through Value(), all writes through setValue() or setParsed()
  • Replace json.Marshal(entry) with entry.JSON() across all file-write paths (8 call sites)
  • Remove encoding/json import from get.go, query.go, incr.go, incrField.go, del.go, setField.go, ttl.go
翻譯
  • Entry.Value 改為私有(value)— 所有讀取走 Value(),所有寫入走 setValue()setParsed()
  • 所有寫檔路徑(8 處)的 json.Marshal(entry) 替換為 entry.JSON()
  • 移除 get.goquery.goincr.goincrField.godel.gosetField.gottl.go 中不再使用的 encoding/json import

Files Changed

File Status Tag
core/store/set.go Modified PERF, REFACTOR
core/store/get.go Modified PERF, REFACTOR
core/store/query.go Modified PERF, REFACTOR
core/store/setField.go Modified PERF, REFACTOR
core/store/incrField.go Modified PERF, REFACTOR
core/store/del.go Modified PERF, REFACTOR
core/store/incr.go Modified REFACTOR
core/store/ttl.go Modified REFACTOR
core/store/aof.go Modified PERF, REFACTOR
core/store/exec.go Modified REFACTOR
core/store/find.go Modified REFACTOR
README.md Modified DOC
CLAUDE.md Added DOC
core/store/query_test.go Added TEST
core/store/find_bench_test.go Added TEST

Generated by SKILL