diff options
author | 2023-07-30 08:27:31 -0700 | |
---|---|---|
committer | 2023-07-30 08:27:31 -0700 | |
commit | 092ada6d2f31212754e17ab944168463c2d2d327 (patch) | |
tree | 717aceada5ed60cd8565f7877725d9342f91a955 | |
parent | e636f1b02693e418ec276942f51e9bdefb23f2f6 (diff) | |
download | bun-092ada6d2f31212754e17ab944168463c2d2d327.tar.gz bun-092ada6d2f31212754e17ab944168463c2d2d327.tar.zst bun-092ada6d2f31212754e17ab944168463c2d2d327.zip |
Micro-optimize LineOffsetTable.generate
5.00 ms 100.0% 0 s bun (81023)
2.00 ms 40.0% 2.00 ms WTF::HashTableAddResult<WTF::HashTableIterator<WTF::HashTable<WTF::Packed<WTF::StringImpl*>, WTF::Packed<WTF::StringImpl*>, WTF::IdentityExtractor, WTF::DefaultHash<WTF::Packed<WTF::StringImpl*>>, WTF::HashTraits<WTF::Packed<WTF::StringImpl*>>, WTF::HashTraits<WTF::Packed<WTF::StringImpl*>>>, WTF::Packed<WTF::StringImpl*>, WTF::Packed<WTF::StringImpl*>, WTF::IdentityExtractor, WTF::DefaultHash<WTF::Packed<WTF::StringImpl*>>, WTF::HashTraits<WTF::Packed<WTF::StringImpl*>>, WTF::HashTraits<WTF::Packed<WTF::StringImpl*>>>> WTF::HashTable<WTF::Packed<WTF::StringImpl*>, WTF::Packed<WTF::StringImpl*>, WTF::IdentityExtractor, WTF::DefaultHash<WTF::Packed<WTF::StringImpl*>>, WTF::HashTraits<WTF::Packed<WTF::StringImpl*>>, WTF::HashTraits<WTF::Packed<WTF::StringImpl*>>>::addPassingHashCode<WTF::HashSetTranslatorAdapter<WTF::BufferFromStaticDataTranslator<unsigned char>>, WTF::HashTranslatorCharBuffer<unsigned char> const&, WTF::HashTranslatorCharBuffer<unsigned char> const&>(WTF::HashTranslatorCharBuffer<unsigned char> const&, WTF::HashTranslatorCharBuffer<unsigned char> const&)
2.00 ms 40.0% 2.00 ms heap.StackFallbackAllocator(1024).free
2.00 ms 40.0% 0 s em.Allocator.rawFree
2.00 ms 40.0% 0 s em.Allocator.log2a
2.00 ms 40.0% 0 s em.Allocator.free__anon_1330765
2.00 ms 40.0% 0 s em.Allocator.resize__anon_1069235
2.00 ms 40.0% 0 s array_list.ArrayListAligned(i32,null).toOwnedSlice
-rw-r--r-- | src/sourcemap/sourcemap.zig | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/sourcemap/sourcemap.zig b/src/sourcemap/sourcemap.zig index 178422848..c090397b3 100644 --- a/src/sourcemap/sourcemap.zig +++ b/src/sourcemap/sourcemap.zig @@ -933,7 +933,10 @@ pub const LineOffsetTable = struct { continue; } - var owned = columns_for_non_ascii.toOwnedSlice() catch unreachable; + // We don't call .toOwnedSlice() because it is expensive to + // reallocate the array AND when inside an Arena, it's + // hideously expensive + var owned = columns_for_non_ascii.items; if (stack_fallback.fixed_buffer_allocator.ownsSlice(std.mem.sliceAsBytes(owned))) { owned = allocator.dupe(i32, owned) catch unreachable; } |