<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ydb/library/cpp/yt/string/ya.make, 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 string] move some dependencies out for 32bit build support</title>
<updated>2026-02-27T08:01:16Z</updated>
<author>
<name>vasko</name>
<email>vasko@yandex-team.com</email>
</author>
<published>2026-02-27T07:15:10Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=46878746325da24b281589e6f63bc256be0652d7'/>
<id>urn:sha1:46878746325da24b281589e6f63bc256be0652d7</id>
<content type='text'>
многие либы тянут yt/string и получают транизитивно compact\_container, который в большинстве случаев не используется (и не собирается под 32 бита)

убираю это зависимость через forward decl (всё что делает string с compact\_container это задаёт концепты, которым не нужно полное определение)
commit_hash:611af702c90f87ab98e05df17ec992bd2a972488
</content>
</entry>
<entry>
<title>YT-18571: library/cpp/yt/small_containers -&gt; library/cpp/yt/compact_containers</title>
<updated>2025-01-12T06:02:29Z</updated>
<author>
<name>babenko</name>
<email>babenko@yandex-team.com</email>
</author>
<published>2025-01-12T05:43:05Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=6065cf56d7ca8909c36e1f5c38daac25b2e584da'/>
<id>urn:sha1:6065cf56d7ca8909c36e1f5c38daac25b2e584da</id>
<content type='text'>
commit_hash:fc31d2770ebeffeb513c4535bd146c731b7f78fb
</content>
</entry>
<entry>
<title>Extract string_builder</title>
<updated>2024-10-13T14:58:33Z</updated>
<author>
<name>babenko</name>
<email>babenko@yandex-team.com</email>
</author>
<published>2024-10-13T14:47:48Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=a03ad07f802b86bbf071acbe1358f7e00ca4be34'/>
<id>urn:sha1:a03ad07f802b86bbf071acbe1358f7e00ca4be34</id>
<content type='text'>
commit_hash:1573c88f09db79bab2755c9c2c3ffd0bc219b2d2
</content>
</entry>
<entry>
<title>YT-21868: Enable stat analysis in some other places</title>
<updated>2024-06-13T14:13:41Z</updated>
<author>
<name>arkady-e1ppa</name>
<email>arkady-e1ppa@yandex-team.com</email>
</author>
<published>2024-06-13T13:50:14Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=3a8a5fac5ba669fa5bed1ccd92e75bdfc6d30d21'/>
<id>urn:sha1:3a8a5fac5ba669fa5bed1ccd92e75bdfc6d30d21</id>
<content type='text'>
We slightly rework inner workings of stat analysis. For almost any sane use case the behavior is identical, but should compile a little faster.

If you send string literals like `char[N]` or `const char*` make them constexpr. If you can't (e.g. `ex.what()` case) wrap it in `TStringBuf`, if you want the "by the book; 100% right" solution then wrap it in `TRuntimeFormat` instead.

`SetRequestInfo` methods now statically checks the format. Only one error was found -- hooray!

Some other internal stuff was added, a lot removed -- don't worry about it. You won't be able to see the difference
62050dfe8a9cedc1289f18e80397ff33a8e2ecdb
</content>
</entry>
<entry>
<title>add ymake export to ydb</title>
<updated>2023-06-13T08:05:01Z</updated>
<author>
<name>alexv-smirnov</name>
<email>alex@ydb.tech</email>
</author>
<published>2023-06-13T08:05:01Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=bf0f13dd39ee3e65092ba3572bb5b1fcd125dcd0'/>
<id>urn:sha1:bf0f13dd39ee3e65092ba3572bb5b1fcd125dcd0</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Revert ymake build from ydb oss export</title>
<updated>2023-03-28T19:25:04Z</updated>
<author>
<name>alexv-smirnov</name>
<email>alex@ydb.tech</email>
</author>
<published>2023-03-28T19:25:04Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=b8a17f9b1c166d2e9a26b99348a4c29d972caf55'/>
<id>urn:sha1:b8a17f9b1c166d2e9a26b99348a4c29d972caf55</id>
<content type='text'>
</content>
</entry>
<entry>
<title>add library/cpp/actors, ymake build to ydb oss export</title>
<updated>2023-03-15T16:59:12Z</updated>
<author>
<name>alexv-smirnov</name>
<email>alex@ydb.tech</email>
</author>
<published>2023-03-15T16:59:12Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=056bb284ccf8dd6793ec3a54ffa36c4fb2b9ad11'/>
<id>urn:sha1:056bb284ccf8dd6793ec3a54ffa36c4fb2b9ad11</id>
<content type='text'>
</content>
</entry>
<entry>
<title>intermediate changes</title>
<updated>2022-03-15T10:35:56Z</updated>
<author>
<name>arcadia-devtools</name>
<email>arcadia-devtools@yandex-team.ru</email>
</author>
<published>2022-03-15T10:35:56Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=094638589de6a6c9f91fad0005843fc1c1adc957'/>
<id>urn:sha1:094638589de6a6c9f91fad0005843fc1c1adc957</id>
<content type='text'>
ref:ca7a95e8c9a9d780f96497136a152091d54e61b5
</content>
</entry>
<entry>
<title>Restoring authorship annotation for &lt;babenko@yandex-team.ru&gt;. Commit 2 of 2.</title>
<updated>2022-02-10T13:49:19Z</updated>
<author>
<name>babenko</name>
<email>babenko@yandex-team.ru</email>
</author>
<published>2022-02-10T13:49:19Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=f31097c96270919a1f49360bdaaa69ea4f3fefab'/>
<id>urn:sha1:f31097c96270919a1f49360bdaaa69ea4f3fefab</id>
<content type='text'>
</content>
</entry>
</feed>
