serenity/AK
Andreas Kling 4e004a664f JsonParser: Cache the last seen string starting with each possible char
Keep a 256-entry string cache during parse to avoid creating some new
strings when possible. This cache is far from perfect but very cheap.
Since none of the strings are transient, this only costs us a couple of
pointers and a bit of ref-count manipulation.

The cache hit rate on 4chan_catalog.json is ~33% and the speedup on
the load_4chan_catalog benchmark is ~7%.
2019-08-04 18:41:24 +02:00
..
ELF ELFImage: Sprinkle some constification love 2019-07-18 13:22:51 +02:00
Tests AK: Add a benchmark for parsing 4chan catalog JSON 2019-08-04 11:57:32 +02:00
AKString.h AK: Add StringView::to_int() 2019-08-04 11:44:20 +02:00
Assertions.h TestSuite: Hijack the ASSERT macros during unit tests. 2019-08-02 09:23:03 +02:00
Badge.h AK: Delete the Badge copy and move constructors. 2019-06-11 23:47:51 -07:00
Bitmap.h AK: Make Bitmap movable but not copyable. 2019-08-01 11:34:36 +02:00
BufferStream.h BufferStream: It's not an error to read up to the very end of a buffer 2019-08-03 19:20:05 +02:00
ByteBuffer.h ByteBuffer: Add slice_view(). Works like slice() but makes a wrapper only. 2019-07-27 15:26:51 +02:00
CircularQueue.h
DoublyLinkedList.h AK: Defer to Traits<T> for equality comparison in container templates. 2019-06-29 19:14:03 +02:00
Error.h Add Error<> 2019-07-31 09:06:39 +02:00
FileSystemPath.cpp TextEditor: Include extension during SaveAs 2019-07-29 20:46:31 +02:00
FileSystemPath.h TextEditor: Include extension during SaveAs 2019-07-29 20:46:31 +02:00
Function.h
HashFunctions.h AK: Rename the common integer typedefs to make it obvious what they are. 2019-07-03 21:20:13 +02:00
HashMap.h AK: Make HashMap::get(Key) return an Optional<Value>. 2019-07-24 10:25:43 +02:00
HashTable.h HashTable: Assert on iteration attempt over table during clear/rehash 2019-07-31 10:23:24 +02:00
InlineLinkedList.h
InlineLRUCache.h
install.sh
IntrusiveList.h AK: Introduce IntrusiveList 2019-07-19 15:42:30 +02:00
IPv4Address.h AK: Add LogStream operator<< for IPv4Address. 2019-07-08 11:43:42 +02:00
IterationDecision.h AK: Add IterationDecision.h. 2019-06-07 17:14:16 +02:00
JsonArray.cpp AK: Rename JsonObject::to_string() and pals to serialized(). 2019-06-18 09:37:47 +02:00
JsonArray.h Json: Add efficient copy and move constructors for Json{Array,Object} 2019-08-04 11:45:16 +02:00
JsonObject.cpp AK: Rename JsonObject::to_string() and pals to serialized(). 2019-06-18 09:37:47 +02:00
JsonObject.h Json: Add efficient copy and move constructors for Json{Array,Object} 2019-08-04 11:45:16 +02:00
JsonParser.cpp JsonParser: Cache the last seen string starting with each possible char 2019-08-04 18:41:24 +02:00
JsonParser.h JsonParser: Cache the last seen string starting with each possible char 2019-08-04 18:41:24 +02:00
JsonValue.cpp JsonObject: Add move constructors for JsonObject(Json{Array,Object}&&) 2019-08-04 11:46:31 +02:00
JsonValue.h JsonObject: Add move constructors for JsonObject(Json{Array,Object}&&) 2019-08-04 11:46:31 +02:00
kmalloc.h
kstdio.h Kernel+LibC: Add a dbgputstr() syscall for sending strings to debug output. 2019-07-21 21:43:37 +02:00
LogStream.cpp LogStream: Add a simple-ish mechanism for colorizing and styling output. 2019-07-15 20:22:30 +02:00
LogStream.h AK: Rename ValueRestorer => ScopedValueRollback. 2019-07-25 15:15:46 +02:00
MappedFile.cpp Kernel: Have the open() syscall take an explicit path length parameter. 2019-07-08 20:01:49 +02:00
MappedFile.h AK: Make MappedFile non-copyable. 2019-07-11 15:14:30 +02:00
NetworkOrdered.h AK: Use __builtin_bswap() in NetworkOrdered. 2019-06-26 20:01:48 +02:00
Noncopyable.h
NonnullOwnPtr.h AK: Simplify NonnullPtrVector template a bit. 2019-07-25 11:10:28 +02:00
NonnullOwnPtrVector.h AK: Simplify NonnullPtrVector template a bit. 2019-07-25 11:10:28 +02:00
NonnullPtrVector.h AK: Simplify NonnullPtrVector template a bit. 2019-07-25 11:10:28 +02:00
NonnullRefPtr.h AK: Simplify RefPtr and NonnullRefPtr's leak_ref() functions 2019-08-02 12:05:09 +02:00
NonnullRefPtrVector.h AK: Simplify NonnullPtrVector template a bit. 2019-07-25 11:10:28 +02:00
Optional.h Optional: Add consumable checks 2019-07-31 09:06:39 +02:00
OwnPtr.h AK: Add assertions when dereferencing an OwnPtr. 2019-08-02 10:34:40 +02:00
Platform.h AK: Shim open_with_path_length() for non-Serenity builds. 2019-07-25 14:25:45 +02:00
PrintfImplementation.h AK: Rename the common integer typedefs to make it obvious what they are. 2019-07-03 21:20:13 +02:00
Queue.h AK: Add Queue::clear() to clear out a Queue. 2019-07-28 21:34:47 +02:00
QuickSort.h LibGUI: Run clang-format on everything. 2019-06-07 11:46:02 +02:00
RefCounted.h AK: Rename Retainable.h => RefCounted.h. 2019-06-21 18:58:45 +02:00
RefPtr.h AK: Remove two redundant RefPtr constructors. 2019-08-03 14:16:05 +02:00
Result.h Add Result<>, to use with/complement Error 2019-07-31 09:06:39 +02:00
ScopedValueRollback.h AK: Add ScopedValueRollback::set_override_rollback_value(). 2019-07-25 15:21:16 +02:00
ScopeGuard.h AK: ScopeGuard.h needs StdLibExtras.h 2019-06-18 09:31:14 +02:00
SinglyLinkedList.h AK: Add some missing includes in SinglyLinkedList. 2019-07-08 14:06:22 +02:00
StdLibExtras.h Kernel+AK: Remove AK/StdLibExtras.cpp, moving kernel stuff to Kernel/. 2019-07-29 11:58:44 +02:00
String.cpp StringView: Rename characters() to characters_without_null_termination(). 2019-07-08 15:38:44 +02:00
StringBuilder.cpp StringBuilder: Reset the internal builder length after building. 2019-07-08 15:57:25 +02:00
StringBuilder.h AK: Massage it into building on my host system without breaking Serenity. 2019-06-14 06:43:56 +02:00
StringImpl.cpp StringImpl: Fix possible uninitialized access in StringImpl::create(). 2019-06-24 14:38:44 +02:00
StringImpl.h AK: Rename the common integer typedefs to make it obvious what they are. 2019-07-03 21:20:13 +02:00
StringView.cpp AK: Add StringView::to_int() 2019-08-04 11:44:20 +02:00
StringView.h AK: Add StringView::to_int() 2019-08-04 11:44:20 +02:00
TemporaryChange.h
TestSuite.h TestSuite: Hijack the ASSERT macros during unit tests. 2019-08-02 09:23:03 +02:00
Time.h AK: Make timeval_add() and timeval_sub() take references. 2019-06-06 18:02:28 +02:00
Traits.h AK: Rename the common integer typedefs to make it obvious what they are. 2019-07-03 21:20:13 +02:00
Types.h AK: Move clang-specific consumable annotation helpers to Platform.h 2019-07-24 08:16:59 +02:00
Vector.h AK: Add Vector::empend(). 2019-08-01 15:35:45 +02:00
Weakable.h AK: Rename Retainable.h => RefCounted.h. 2019-06-21 18:58:45 +02:00
WeakPtr.h AK: Remove use of copy_ref(). 2019-07-11 15:45:11 +02:00