<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ydb/library/cpp/yt/string, branch CLI_2.32.0</title>
<subtitle>Mirror of YDB github repos</subtitle>
<id>https://code.mastervirt.ru/ydb/atom?h=CLI_2.32.0</id>
<link rel='self' href='https://code.mastervirt.ru/ydb/atom?h=CLI_2.32.0'/>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/'/>
<updated>2026-06-12T21:17:12Z</updated>
<entry>
<title>Speed up NYT::Format</title>
<updated>2026-06-12T21:17:12Z</updated>
<author>
<name>babenko</name>
<email>babenko@yandex-team.com</email>
</author>
<published>2026-06-12T20:53:40Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=42e4b751702f065de932ef765bc6948c5e7d1e4b'/>
<id>urn:sha1:42e4b751702f065de932ef765bc6948c5e7d1e4b</id>
<content type='text'>
Profile-driven optimizations of the `Format` hot path, benchmarked against a representative master debug log (structured `"Key: %v"` messages dominated by GUIDs, strings, integers, bools and durations). Median improvements of ~15-20% across the workload, measured on a dedicated host.

Changes:
- `string_builder`: use `resize_uninitialized` in `DoReserve` to avoid zero-filling the buffer on every `Format` call.
- `format`: replace the per-argument `memchr` (`spec.Contains('n')`) with an inline scan, force-inline `RunFormatterAt`, and add a `FormatString` fast path for the common plain `%v` / empty spec.
- `guid`: rewrite `WriteGuidToBuffer` using a `clz`-derived digit count and a back-to-front fill instead of the per-magnitude branch cascade (cut from ~26% to ~12% of a GUID-heavy line). Validated against an `%x` reference over 2M random GUIDs plus edge cases.

Also adds `library/cpp/yt/string/benchmark` to track `Format` performance.

### Benchmarks

Median ns/op (lower is better), pinned core on a dedicated Xeon E5-2650 v2, 9x1s repetitions. See `library/cpp/yt/string/benchmark`.

| Benchmark | What it formats | Before | After | Speedup |
| --- | --- | ---: | ---: | ---: |
| `ManyMixedArgs` | ~18 args: GUIDs, strings, duration, ints | 1030 | 833 | -19% |
| `StringAndTwoGuids` | literal prefix + two GUIDs | 233 | 185 | -21% |
| `IntAndGuid` | one int + one GUID | 205 | 179 | -13% |
| `ManyInts` | six integers | 389 | 340 | -13% |
| `Guid` | a single GUID | 156 | 131 | -16% |
| `String` | a single string | 139 | 104 | -25% |
| `Int` | a single integer | 142 | 120 | -15% |
| `NoArgs` | a literal with no arguments | 88.8 | 85.7 | -3% |
commit_hash:ce9957a06c3ff28b2889aa65fbbddf4ca444f9fe
</content>
</entry>
<entry>
<title>YT: Add formatter for all protobuf enums</title>
<updated>2026-06-02T10:59:36Z</updated>
<author>
<name>grigminakov</name>
<email>grigminakov@yandex-team.com</email>
</author>
<published>2026-06-02T08:55:51Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=3b859ddc8d5eee908953aa0a217e448933ffc2af'/>
<id>urn:sha1:3b859ddc8d5eee908953aa0a217e448933ffc2af</id>
<content type='text'>
commit_hash:58bf07dcff4aac728a67e0607d2c3b49ad1feef1
</content>
</entry>
<entry>
<title>Remove excess blank line</title>
<updated>2026-05-19T01:15:02Z</updated>
<author>
<name>pechatnov</name>
<email>pechatnov@yandex-team.com</email>
</author>
<published>2026-05-19T00:48:45Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=e324708cc3d0cf8fe8e3f192da6a1d1f93c2bdc5'/>
<id>urn:sha1:e324708cc3d0cf8fe8e3f192da6a1d1f93c2bdc5</id>
<content type='text'>
commit_hash:fff41cdbc1400a312067a6517c334440404c662b
</content>
</entry>
<entry>
<title>YT-26137: Drop indicies in multicell manager</title>
<updated>2026-05-12T00:44:14Z</updated>
<author>
<name>cherepashka</name>
<email>cherepashka@yandex-team.com</email>
</author>
<published>2026-05-12T00:24:37Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=2772dbbb657803d9e96f552b13993740a1c280f9'/>
<id>urn:sha1:2772dbbb657803d9e96f552b13993740a1c280f9</id>
<content type='text'>
* Changelog entry
  Type: feature
  Component: master

Drop indicies in multicell manager
commit_hash:692a550606183f6a8cb93425761911bbba09dceb
</content>
</entry>
<entry>
<title>YT-27951: Use truncated string view to limit query length in traces</title>
<updated>2026-04-23T08:16:41Z</updated>
<author>
<name>osidorkin</name>
<email>osidorkin@yandex-team.com</email>
</author>
<published>2026-04-23T07:46:30Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=3eafe425787c0c3d6b9388faca597c1ab1a978b0'/>
<id>urn:sha1:3eafe425787c0c3d6b9388faca597c1ab1a978b0</id>
<content type='text'>
commit_hash:84610a30b17de408952f5c68dbc32b18b753b247
</content>
</entry>
<entry>
<title>YT-18571: Add format string checks to TStringBuilderBase::AppendFormat; also fix some releaved issues</title>
<updated>2026-04-22T07:08:46Z</updated>
<author>
<name>babenko</name>
<email>babenko@yandex-team.com</email>
</author>
<published>2026-04-22T06:41:38Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=70410f21980c0632b4746ec75cd9ba5762fc109a'/>
<id>urn:sha1:70410f21980c0632b4746ec75cd9ba5762fc109a</id>
<content type='text'>
commit_hash:dd15e713a6a83c8a14f1df2f011fa06f189f4a00
</content>
</entry>
<entry>
<title>YT-27951: Add special formatter for truncated string</title>
<updated>2026-04-20T19:34:00Z</updated>
<author>
<name>osidorkin</name>
<email>osidorkin@yandex-team.com</email>
</author>
<published>2026-04-20T14:41:31Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=bac55b8485b68056b30a4d51ad60443a945c406f'/>
<id>urn:sha1:bac55b8485b68056b30a4d51ad60443a945c406f</id>
<content type='text'>
commit_hash:88bc9543595f9b630942d63aa1c3aee154056e92
</content>
</entry>
<entry>
<title>Fix some use-after-move bugs</title>
<updated>2026-04-17T13:37:33Z</updated>
<author>
<name>pavook</name>
<email>pavook@yandex-team.com</email>
</author>
<published>2026-04-17T12:40:13Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=70edb604e93a313f36e434fd25b312527d59f361'/>
<id>urn:sha1:70edb604e93a313f36e434fd25b312527d59f361</id>
<content type='text'>
commit_hash:4bc357937e76b2b082671bb0f67ac3012ee4dbca
</content>
</entry>
<entry>
<title>Add suggestions on enum parse error</title>
<updated>2026-03-26T08:00:16Z</updated>
<author>
<name>pechatnov</name>
<email>pechatnov@yandex-team.com</email>
</author>
<published>2026-03-26T07:11:59Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=9852998440dcaa3eec11377553e996ff9852bb4e'/>
<id>urn:sha1:9852998440dcaa3eec11377553e996ff9852bb4e</id>
<content type='text'>
commit_hash:3b7f35f613737aa92f473877e8b24782f7dfcd2a
</content>
</entry>
<entry>
<title>[yt/string] bit-independent version of FormatPointerValue</title>
<updated>2026-03-06T07:40:38Z</updated>
<author>
<name>vasko</name>
<email>vasko@yandex-team.com</email>
</author>
<published>2026-03-06T07:18:45Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=39ae7ca20aaff68379747bae5db37b9d446cf9ee'/>
<id>urn:sha1:39ae7ca20aaff68379747bae5db37b9d446cf9ee</id>
<content type='text'>
commit_hash:77b05e63c7d030fccb8d13d83f5e9dc4f660e19d
</content>
</entry>
</feed>
