serenity/AK
Tim Ledbetter 2a1fc96650 AK: Avoid unnecessary String allocations for URL username and password
Previously, `URLParser` was constructing a new String for every
character of the URL's username and password. This change improves
performance by eliminating those unnecessary String allocations.

A URL with a 100,000 character password can now be parsed in ~30ms vs
~8 seconds previously on my machine.
2023-11-06 09:19:12 +01:00
..
.clang-tidy
AllOf.h AK: Make it possible to not using AK classes into the global namespace 2022-11-26 15:51:34 +01:00
AnyOf.h
ArbitrarySizedEnum.h
Array.h AK: Let Array::from_span take a readonly Span 2023-07-09 15:40:41 +01:00
Assertions.cpp AK: Disable assertion output colors on windows 2023-10-29 07:40:35 +01:00
Assertions.h AK: Always use our assertion failure method, and add backtrace to it 2023-09-01 11:50:47 +02:00
Atomic.h AK: Fix volatile qualifier in Atomic<T*>::ptr() 2023-08-18 16:20:13 +02:00
AtomicRefCounted.h
Badge.h
Base64.cpp
Base64.h
BigIntBase.h Everywhere: Remove 'clang-format off' comments that are no longer needed 2023-07-08 10:32:56 +01:00
BinaryBufferWriter.h
BinaryHeap.h
BinarySearch.h
BitCast.h
Bitmap.h
BitmapView.h AK: Fix one-off error in BitmapView::find_first and find_one_anywhere 2023-10-11 15:58:16 +02:00
BitStream.h
BufferedStream.h Revert "AK: Refill a BufferedStream when it has less than the 2023-09-11 21:38:24 -04:00
BuiltinWrappers.h AK: Fix doc comment for bit_scan_forward 2023-10-11 14:36:48 -04:00
BumpAllocator.h
ByteBuffer.h
ByteReader.h
CharacterTypes.h
Checked.h LibAudio: Prevent overflows during prediction 2023-09-09 11:23:57 -06:00
CheckedFormatString.h
CircularBuffer.cpp AK: Use hashing to accelerate searching a CircularBuffer 2023-07-06 15:06:20 +01:00
CircularBuffer.h AK: Use hashing to accelerate searching a CircularBuffer 2023-07-06 15:06:20 +01:00
CircularDeque.h
CircularQueue.h
CMakeLists.txt AK: Implement slugify function for URL slug generation 2023-10-30 10:39:59 +00:00
Complex.h AK: Remove conditional noexcept from Complex 2023-06-01 06:26:08 +02:00
Concepts.h AK: Add a CallableAs<R, Args...> concept 2023-07-08 23:13:00 +01:00
ConstrainedStream.cpp
ConstrainedStream.h
CountingStream.cpp
CountingStream.h
DateConstants.h
Debug.h.in LibPDF: Add a CFF_DEBUG toggle 2023-10-15 07:14:29 +02:00
DefaultDelete.h
Demangle.h
DeprecatedFlyString.cpp AK+Everywhere: Remove the null state of DeprecatedString 2023-10-13 18:33:21 +03:30
DeprecatedFlyString.h
DeprecatedString.cpp AK: Avoid nullptr deref in DeprecatedString(DeprecatedFlyString const&) 2023-10-16 09:06:15 -04:00
DeprecatedString.h AK+Everywhere: Remove the null state of DeprecatedString 2023-10-13 18:33:21 +03:30
Diagnostics.h
DisjointChunks.h LibRegex: Generate a search tree when patterns would benefit from it 2023-07-31 05:31:33 +02:00
DistinctNumeric.h AK: Add helper to make DistinctNumeric types comparable to enums 2023-09-22 18:39:37 -06:00
DOSPackedTime.cpp Kernel: Use UnixDateTime wherever applicable 2023-05-24 23:18:07 +02:00
DOSPackedTime.h Kernel: Use UnixDateTime wherever applicable 2023-05-24 23:18:07 +02:00
DoublyLinkedList.h
Endian.h AK: Add a 'HostIsLittleEndian' constant and use it instead of BYTE_ORDER 2023-08-21 13:39:32 +03:30
EnumBits.h
Error.cpp
Error.h AK: Mark Error nodiscard 2023-07-12 17:03:07 +02:00
Find.h AK: Use Iterator's trait when comparing a value 2023-08-23 20:21:09 +02:00
FixedArray.h AK: Make FixedArray movable 2023-07-21 10:47:34 -06:00
FixedPoint.h AK: Make FixedPoint work on platforms without __int128 2023-09-06 07:17:03 -06:00
FixedStringBuffer.h AK+Kernel: Introduce StdLib function to copy FixedStringBuffer to user 2023-08-25 11:51:52 +02:00
FloatingPoint.h AK: Ensure unions with bitfield structs actually have correct sizes 2023-11-01 09:10:38 +03:30
FloatingPointStringConversions.cpp AK: Add a 'HostIsLittleEndian' constant and use it instead of BYTE_ORDER 2023-08-21 13:39:32 +03:30
FloatingPointStringConversions.h
FlyString.cpp AK: Add FlyString::operator<=>(FlyString const&) 2023-09-06 11:29:03 -04:00
FlyString.h AK: Add FlyString::operator<=>(FlyString const&) 2023-09-06 11:29:03 -04:00
Format.cpp AK: Explicitly instantiate FormatBuilder::put_f32_or_f64<{f32,f64}> 2023-10-31 11:31:17 +03:30
Format.h AK+LibPDF: Make Format print floats in a roundtrip-safe way by default 2023-10-31 09:12:35 +03:30
Forward.h AK: Move parts for searching CircularBuffer into a new class 2023-07-06 15:06:20 +01:00
FPControl.h AK: Ensure unions with bitfield structs actually have correct sizes 2023-11-01 09:10:38 +03:30
Function.h AK: Use outline Function storage if alignment requirements are not met 2023-09-22 22:10:16 +03:30
FuzzyMatch.cpp AK/FuzzyMatch: Check every match for neighbor character bonuses 2023-10-06 22:09:18 +02:00
FuzzyMatch.h
GenericLexer.cpp AK: Add GenericLexer::{consume_decimal_integer,peek_string} 2023-11-04 18:06:30 +01:00
GenericLexer.h AK: Add GenericLexer::{consume_decimal_integer,peek_string} 2023-11-04 18:06:30 +01:00
GenericShorthands.h AK: Mark generic shorthand functions as constexpr 2023-06-01 06:25:00 +02:00
HashFunctions.h
HashMap.h AK: Implement SipHash as the default hash algorithm for most use cases 2023-10-01 11:06:36 +03:30
HashTable.h AK: Implement SipHash as the default hash algorithm for most use cases 2023-10-01 11:06:36 +03:30
Hex.cpp
Hex.h Everywhere: Move global Kernel pattern code to Kernel/Library directory 2023-06-04 21:32:34 +02:00
IDAllocator.h
InsertionSort.h
IntegralMath.h AK: Use correct type when calculating integral exp2() 2023-10-27 21:59:44 -04:00
IntrusiveDetails.h
IntrusiveList.h
IntrusiveListRelaxedConst.h
IntrusiveRedBlackTree.h
IPv4Address.h AK: Use secure SipHash-4-8 for IP addresses 2023-10-01 11:06:36 +03:30
IPv6Address.h AK: Use secure SipHash-4-8 for IP addresses 2023-10-01 11:06:36 +03:30
IterationDecision.h
Iterator.h
JsonArray.h
JsonArraySerializer.h
JsonObject.cpp
JsonObject.h
JsonObjectSerializer.h
JsonParser.cpp AK: Bring JsonParser's string consumption closer to the ECMA 404 spec 2023-11-01 17:28:19 -06:00
JsonParser.h
JsonPath.cpp
JsonPath.h
JsonValue.cpp AK+LibJS: Remove error-prone JsonValue constructor 2023-11-01 11:15:26 -04:00
JsonValue.h AK+LibJS: Remove error-prone JsonValue constructor 2023-11-01 11:15:26 -04:00
kmalloc.cpp
kmalloc.h
kstdio.h
LEB128.h
LexicalPath.cpp AK+Everywhere: Remove the null state of DeprecatedString 2023-10-13 18:33:21 +03:30
LexicalPath.h AK: Add argument to LexicalPath::basename to strip the extension 2023-07-30 17:50:44 -06:00
MACAddress.h Everywhere: Move global Kernel pattern code to Kernel/Library directory 2023-06-04 21:32:34 +02:00
Math.h AK: Add to_radians and to_degrees math functions 2023-09-10 08:38:29 +01:00
MaybeOwned.h AK: Simplify MaybeOwned constructor 2023-06-23 01:34:27 +02:00
MemMem.h
Memory.h Everywhere: Move global Kernel pattern code to Kernel/Library directory 2023-06-04 21:32:34 +02:00
MemoryStream.cpp AK: Make writability violation of FixedMemoryStream non-fatal 2023-09-27 03:22:56 +02:00
MemoryStream.h AK: Add FixedMemoryStream methods for reading values "in place" 2023-10-10 14:36:25 +02:00
NeverDestroyed.h
NoAllocationGuard.h
Noncopyable.h AK: Introduce AK_MAKE_DEFAULT_MOVABLE macro for easier default impls 2023-06-18 08:47:51 +01:00
NonnullOwnPtr.h AK: Make Formatter for NonnullOwnPtr<T> format the T 2023-08-25 20:10:47 +02:00
NonnullRefPtr.h AK: Work around Xcode 15 beta mishandling trailing requires clauses 2023-07-12 15:43:18 +01:00
NumberFormat.cpp
NumberFormat.h
NumericLimits.h AK+LibJS: Make Number.MIN_VALUE a denormal 2023-07-02 21:19:09 +01:00
Optional.h
OptionParser.cpp
OptionParser.h
OwnPtr.h
Platform.h AK: Defined _COARSE clocks as the normal ones on Haiku 2023-09-17 13:38:12 -06:00
PrintfImplementation.h AK: Implement printf's "period without precision value" correctly 2023-10-06 08:21:18 +02:00
Ptr32.h
Queue.h
QuickSelect.h
QuickSort.h
Random.cpp
Random.h AK: Implement fill_with_random() for Haiku 2023-09-17 13:38:12 -06:00
RecursionDecision.h AK: Add missing include in RecursionDecision.h 2023-08-18 08:58:51 +03:30
RedBlackTree.h
RefCounted.h
RefCountForwarder.h
RefPtr.h AK: Work around Xcode 15 beta mishandling trailing requires clauses 2023-07-12 15:43:18 +01:00
Result.h
ReverseIterator.h
ScopedValueRollback.h
ScopeGuard.h
ScopeLogger.h
SIMD.h
SIMDExtras.h LibWasm: Implement a few SIMD instructions 2023-08-21 13:39:32 +03:30
SIMDMath.h
Singleton.h Everywhere: Move global Kernel pattern code to Kernel/Library directory 2023-06-04 21:32:34 +02:00
SinglyLinkedList.h AK+Kernel: Unify Traits<T>::equals()'s argument order on different types 2023-08-23 20:21:09 +02:00
SinglyLinkedListSizePolicy.h
SipHash.cpp AK: Make SipHash not depend on size_t bit length 2023-10-27 05:57:18 +03:30
SipHash.h AK: Implement SipHash as the default hash algorithm for most use cases 2023-10-01 11:06:36 +03:30
Slugify.cpp AK: Implement slugify function for URL slug generation 2023-10-30 10:39:59 +00:00
Slugify.h AK: Implement slugify function for URL slug generation 2023-10-30 10:39:59 +00:00
SourceGenerator.h AK: Make SourceGenerator::fork() infallible 2023-08-22 13:08:24 +02:00
SourceLocation.h AK: Add copy assignment operator for SourceLocation 2023-09-24 14:55:32 +02:00
Span.h AK: Add Span<T>::matching_prefix_length 2023-07-06 15:06:20 +01:00
Stack.h
StackInfo.cpp AK: Use the Linux implementation of StackInfo() on Haiku 2023-09-17 13:38:12 -06:00
StackInfo.h AK: Use __builtin_frame_address to find current stack depth remaining 2023-07-01 07:03:11 +02:00
Statistics.h AK: Allow Statistics to be used with any container type 2023-08-16 01:10:35 +02:00
StdLibExtraDetails.h AK: Add InvokeResult 2023-09-09 11:21:15 -06:00
StdLibExtras.h
Stream.cpp
Stream.h
String.cpp AK: Bring some missing DeprecatedString API over to String 2023-11-04 21:28:30 +01:00
String.h AK: Bring some missing DeprecatedString API over to String 2023-11-04 21:28:30 +01:00
StringBuilder.cpp AK: Implement string formatting for FixedStringBuffers 2023-08-12 11:48:48 -06:00
StringBuilder.h AK: Implement string formatting for FixedStringBuffers 2023-08-12 11:48:48 -06:00
StringFloatingPointConversions.cpp
StringFloatingPointConversions.h
StringHash.h AK: Implement SipHash as the default hash algorithm for most use cases 2023-10-01 11:06:36 +03:30
StringImpl.cpp AK+Everywhere: Remove the null state of DeprecatedString 2023-10-13 18:33:21 +03:30
StringImpl.h
StringUtils.cpp AK: Pass correct length to StringUtils::convert_to_floating_point() 2023-10-22 00:22:29 +02:00
StringUtils.h AK: Add StringView::count(char) 2023-08-18 08:58:51 +03:30
StringView.cpp AK+Everywhere: Remove the null state of DeprecatedString 2023-10-13 18:33:21 +03:30
StringView.h AK: Fix Clang 18 -Wdeprecated-literal-operator warning 2023-08-19 11:07:12 +02:00
TemporaryChange.h
Time.cpp AK: Remove Duration::now_monotonic 2023-05-24 23:18:07 +02:00
Time.h Everywhere: Remove 'clang-format off' comments that are no longer needed 2023-07-08 10:32:56 +01:00
Traits.h AK: Implement SipHash as the default hash algorithm for most use cases 2023-10-01 11:06:36 +03:30
Trie.h AK: Allow customising Trie's underlying map type 2023-07-31 05:31:33 +02:00
Try.h
Tuple.h
TypeCasts.h
TypedTransfer.h
TypeList.h AK: Use compiler builtins for MakeIntegerSequence/TypeListElement 2023-06-28 16:18:32 +02:00
Types.h
UBSanitizer.h
UFixedBigInt.h AK: Add support for Little/BigEndian<UFixedBigInteger<M>> 2023-08-21 13:39:32 +03:30
UFixedBigIntDivision.h
UnicodeUtils.h
URL.cpp AK: Port URL m_paths to String 2023-10-26 11:11:41 +02:00
URL.h AK: Port URL m_paths to String 2023-10-26 11:11:41 +02:00
URLParser.cpp AK: Avoid unnecessary String allocations for URL username and password 2023-11-06 09:19:12 +01:00
URLParser.h AK: Properly implement steps for shortening a URLs path 2023-10-26 11:11:41 +02:00
Userspace.h Kernel: Move {Virtual,Physical}Address classes to the Memory directory 2023-06-04 21:32:34 +02:00
Utf8View.cpp
Utf8View.h
Utf16View.cpp
Utf16View.h
Utf32View.cpp
Utf32View.h
UUID.cpp
UUID.h Everywhere: Move global Kernel pattern code to Kernel/Library directory 2023-06-04 21:32:34 +02:00
Variant.h AK: Allow testing Empty instances for equality 2023-07-28 20:47:48 +03:30
Vector.h Everywhere: Run clang-format 2023-07-08 10:32:56 +01:00
Weakable.h
WeakPtr.h