| Commit message (Collapse) | Author | Age |
... | |
|
|
|
|
| |
PiperOrigin-RevId: 601477629
Change-Id: I3b683d94192b04f233ce5ec636586ccb90d24602
|
|
|
|
|
|
|
|
|
| |
This was not intended to be supported, and it has resulted in calls as `absl::StrCat({...})`, which are not supported and only work coincidentally for the first 4 arguments due to `absl::StrCat` having overloads that take `absl::AlphaNum` directly for those.
The existing situation prevents modifying the implementations of such functions to alternatives that do not have such overloads for those arguments.
PiperOrigin-RevId: 599872755
Change-Id: I02c90119b2b96a922cf7e3b5d5f02affe24a272d
|
|
|
|
|
|
|
| |
The current support policy is `_MSC_VER >= 1920`.
PiperOrigin-RevId: 599833619
Change-Id: I9cf7393a5b659d1680765e37e0328539ccb870fa
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
releasing Abseil and GoogleTest.
GoogleTest referenced this internal file and this internal trait. Since
simultaneous releases are not possible since once release must reference
another, we will temporarily add this back.
https://github.com/google/googletest/blob/v1.14.x/googletest/include/gtest/gtest-printers.h#L119
https://github.com/google/googletest/pull/4368#issuecomment-1717699895
https://github.com/google/googletest/pull/4368#issuecomment-1717699895
PiperOrigin-RevId: 597073935
Change-Id: I7c2697a212dc477fd25770777445c64cfee73745
|
|
|
|
|
|
|
|
|
| |
This follows Benford's law, which is likely also a much more accurate representation of real data than a constant.
We also add benchmarks for different integer types.
PiperOrigin-RevId: 596039508
Change-Id: I4862c7cfdbf5face18ae31cf0bd2fd54e47684b7
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The updated code is designed to:
- Be branch-predictor-friendly
- Be cache-friendly
- Minimize the lengths of critical paths
- Minimize slow operations (particularly multiplications)
- Minimize binary/codegen bloat
The most notable performance trick here is perhaps the precomputation & caching of the number of digits, so that we can reuse/exploit it when writing the output.
This precomputation of the exact length enables 2 further performance benefits:
- It makes `StrCat` and `StrAppend` zero-copy when only integers are passed, by avoiding intermediate `AlphaNum` entirely in those cases. If needed in the future, we can probably also make many other mixtures of non-integer types zero-copy as well.
- It avoids over-reservation of the string buffer, allowing for more strings to fit inside SSO, which will likely have further performance benefits.
There is also a side benefit of preventing `FastIntToBuffer` from writing beyond the end of the buffer, which has caused buffer overflows in the past.
The new code continues to use & extend some of the existing core tricks (such as the division-by-100 trick), as those are already efficient.
PiperOrigin-RevId: 595785531
Change-Id: Id6920e7e038fec10b2c45f213de75dc7e2cbddd1
|
|
|
|
|
|
|
| |
Neither GCC nor Clang's __builtin_nan(), nor glibc's nan(), accept null pointers.
PiperOrigin-RevId: 595767225
Change-Id: I4cddd1cafd0c9e83a823ec68386f10ce077c6b4c
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
https://github.com/abseil/abseil-cpp/issues/1465 reports that
some CMake builds on Apply platforms issue
```
warning: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: archive library: libabsl_bad_any_cast_impl.a the table of contents is empty (no object file members in the library define global symbols)
```
Our CMake build handles this problem for header-only libraries by not
building a library at all. For some libraries, for example our polyfills,
the library is only conditionally empty. In these libraries, I added
a single char variable on Apple platforms as a workaround.
I have been able to reproduce the warnings reported in
https://github.com/abseil/abseil-cpp/issues/1465, but they don't fail the
build for me. I don't see them any more after this change.
PiperOrigin-RevId: 595480705
Change-Id: Ie48637e84ebae2f2aea4e2de83b146f30f6a76b9
|
|
|
|
|
|
|
|
|
| |
absl::numbers_internal::FastIntToBuffer isn't provably insufficient
This performance-sensitive API is internal, and should not be used directly. Nevertheless, some do use it, so it's worth trying to block incorrect uses where we can.
PiperOrigin-RevId: 594289730
Change-Id: Ib5df39b450ef2ceda795082cde10ec2ba2642172
|
|
|
|
|
| |
PiperOrigin-RevId: 592664369
Change-Id: I7aa7b045c2b3c0f25cff7b82eb9d9cc13e9fc49f
|
|
|
|
|
| |
PiperOrigin-RevId: 592653487
Change-Id: Iddd2f484807cb02dd2ee8bba26c22d196be02c88
|
|
|
|
|
| |
PiperOrigin-RevId: 591894838
Change-Id: Ib3fe72d255f49320e2728c210ba1faabc81e0ef8
|
|
|
|
|
| |
PiperOrigin-RevId: 591161019
Change-Id: Iae2477a24819e20288fbb83b4a343031af71f1bb
|
|
|
|
|
| |
PiperOrigin-RevId: 591015112
Change-Id: I3e654433f0b0a4ea02ee10e0894e70738e730782
|
|
|
|
|
| |
PiperOrigin-RevId: 589842893
Change-Id: I9657761d1f71c665582406f278c6605f6d382f6d
|
|
|
|
|
| |
PiperOrigin-RevId: 588530709
Change-Id: Iee28c7693a4802f11e13728e1c28febee8c8576f
|
|
|
|
|
|
|
| |
This converts to UTF-8 regardless of locale.
PiperOrigin-RevId: 588186076
Change-Id: I2c9598279b413d460e13ad65da2ba421c0b40b83
|
|
|
|
|
| |
PiperOrigin-RevId: 585691325
Change-Id: Icd18dc0294dfd1e22f9878b628d5e5898fcc8185
|
|
|
|
|
| |
PiperOrigin-RevId: 582455513
Change-Id: Ic78d14d6dd748420a64e7026ec7f8b967bebbf42
|
|
|
|
|
| |
PiperOrigin-RevId: 582033534
Change-Id: I9af42210f65b40ccd7f55c9a2e0c8387b69760dc
|
|
|
|
|
| |
PiperOrigin-RevId: 579263069
Change-Id: I78678c2fc6aba4851f8a06dafb695c913accf0d0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We are also avoiding potential cache-misses, by avoiding load.
name old speed new speed delta
BM_Searchcase 3.09GB/s ±13% 3.20GB/s ±16% +3.69% (p=0.039 n=20+17)
BM_SearchcaseMedium 1.08GB/s ± 7% 1.04GB/s ±14% ~ (p=0.814 n=16+20)
BM_SearchcasePathological 618kB/s ±13% 652kB/s ± 6% +5.55% (p=0.043 n=20+16)
BM_Memcasematch 2.43GB/s ± 3% 2.45GB/s ± 3% ~ (p=0.488 n=17+16)
BM_MemcasematchMedium 230MB/s ± 8% 261MB/s ±14% +13.77% (p=0.000 n=16+20)
BM_MemcasematchPathological 624kB/s ±14% 619kB/s ±14% ~ (p=0.836 n=20+20)
PiperOrigin-RevId: 577919033
Change-Id: I31324e04b6a577c582ad630d171d3b41d826f1e4
|
|
|
|
|
|
|
| |
#1558
PiperOrigin-RevId: 577874842
Change-Id: I1d56f3f4b445f6c4a9df2fe06fec542cb00e0e92
|
|
|
|
|
| |
PiperOrigin-RevId: 576162408
Change-Id: Ib383bb744b5cb11b6cbc99f2323583e1d23d8ff1
|
|
|
|
|
| |
PiperOrigin-RevId: 576149980
Change-Id: I0a7e3df7a01edc78ee5d15d8d8e82e7bbc5fc0f3
|
|
|
|
|
|
|
| |
`absl::AsciiStrToUpper`.
PiperOrigin-RevId: 575969640
Change-Id: If6ddc0a71debfe571c2739ec91fc99594bc36f88
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
when targeting at least C++20
These methods were added to C++20, so they are not available in
earlier language standards. Users requiring compatibility prior to C++20
should use absl::StartsWith() and absl::EndsWith() from
//absl/strings/match.h.
Most users are not affected by this change. By default when targeting at least
C++20 absl::string_view will be an alias for std::string_view. Only users
that have modified //absl/base/options.h will see this change.
PiperOrigin-RevId: 575238435
Change-Id: I7b03fde02c987b30b88c794640c2a616851997d1
|
|
|
|
|
|
|
|
|
|
| |
I.e. for a type `Example`, if
```
std::ostream& operator<<(std::ostream&, const Example&);
```
is declared, `absl::HasOstreamOperator<Example>::value` is `true`.
PiperOrigin-RevId: 574637891
Change-Id: I123d8f35a6e3ea894745133f7d81b1610fb475d5
|
|
|
|
|
|
|
| |
Users should use `absl::HasAbslStringify` instead.
PiperOrigin-RevId: 572916854
Change-Id: Ie67e076e0335b108d23f886a28074f7557ba045a
|
|
|
|
|
| |
PiperOrigin-RevId: 572575394
Change-Id: Ic1c5ac2423b1634e50c43bad6daa14e82a8f3e2c
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The layering_check feature ensures that rules that include a header
explicitly depend on a rule that exports that header. Compiler support
is required, and currently only Clang 16+ supports diagnoses
layering_check failures.
The parse_headers feature ensures headers are self-contained by
compiling them with -fsyntax-only on supported compilers.
PiperOrigin-RevId: 572350144
Change-Id: I37297f761566d686d9dd58d318979d688b7e36d1
|
|
|
|
|
| |
PiperOrigin-RevId: 571487219
Change-Id: I6fbb2ff19db2b6d77e55059004d65c8639eb7fca
|
|
|
|
|
|
|
| |
`absl::Cord`.
PiperOrigin-RevId: 567695227
Change-Id: I13eb8a1872d2fe703b5f3b9bc8df7fec4381fb55
|
|
|
|
|
| |
PiperOrigin-RevId: 566650311
Change-Id: Ibfabee88ea9999d08ade05ece362f5a075d19695
|
|
|
|
|
|
|
| |
semantics.
PiperOrigin-RevId: 565330231
Change-Id: I84f0e9065986bb592b5bfb196b3fc221feb14bc4
|
|
|
|
|
| |
PiperOrigin-RevId: 565050503
Change-Id: I8f4c463be4ef513a2788745d1b454a7ede489152
|
|
|
|
|
|
|
|
|
| |
65d7b6d changed StrCat() to not use an intermediate buffer when the
result fits in the SSO buffer, but only libc++ has an SSO buffer large
enough for this optimization to work.
PiperOrigin-RevId: 564447163
Change-Id: I0c7fa4afed3369b36e13e7d1691eb7f933ea0091
|
|
|
|
|
| |
PiperOrigin-RevId: 564296635
Change-Id: I13ca663cdb676948a7041c5671b82a97a4388ff1
|
|
|
|
|
|
|
| |
We have no intention to use it instead of the CordRepBtree implementation, so cleanup up and remove all code and references.
PiperOrigin-RevId: 563803813
Change-Id: I95a67318d0f722f3eb7ecdcc7b6c87e28f2e26dd
|
|
|
|
|
|
|
| |
It sorts NaNs and the test became flaky. Flakiness arises from the fact that sorting checks randomize and check for 100 elements but we sort here around a thousand
PiperOrigin-RevId: 563783036
Change-Id: Id25bcb47483acf9c40be3fd1747c37d046197330
|
|
|
|
|
|
|
| |
comment seemed to suggest that the return type varies depending on the compiler and hence the `static_cast` is needed.
PiperOrigin-RevId: 561706189
Change-Id: Ie244d235d082536edfca263d4165e16171cbc6c7
|
|
|
|
|
| |
PiperOrigin-RevId: 561444343
Change-Id: I26c648b28b626e11caa32b0a34aef92932d5ddb9
|
|
|
|
|
| |
PiperOrigin-RevId: 560038034
Change-Id: I2c74d271b52faeefb6e8627d9830b2b53de64e73
|
|
|
|
|
| |
PiperOrigin-RevId: 559415517
Change-Id: I5bbc744bf00be2fd15ec7544b725d699e0d982fb
|
|
|
|
|
|
|
| |
Some time ago the invariant for CRC cordreps was relaxed to allow for nullptr values on empty cords with an explicit empty CRC value. The CordzInfo analysis never checked for nullptr values causing cord sampling to crash if the sampling happened to include a (very unlikely) empty Cord value.
PiperOrigin-RevId: 558202613
Change-Id: Ib0e1eadd08047167e4df5d3035b36dca2c285a0d
|
|
|
|
|
| |
PiperOrigin-RevId: 557811632
Change-Id: I370fa17d2fb82a1f1ca86f84529bae31b34b18e4
|
|
|
|
|
| |
PiperOrigin-RevId: 557523229
Change-Id: I959c0b0b14a4a96bee396d4bc09b80328060287d
|
|
|
|
|
|
|
| |
by avoiding a redundant map lookup.
PiperOrigin-RevId: 556816759
Change-Id: I971e428bf12d91720df72a91cc0bdf0513b0c270
|
|
|
|
|
| |
PiperOrigin-RevId: 555515105
Change-Id: I00929a869880cddd932ed2a08adb8f762a582738
|
|
|
|
|
| |
PiperOrigin-RevId: 555080884
Change-Id: I3f83fbeea1352587cf46fed83861cd7fb75655b0
|