-
Notifications
You must be signed in to change notification settings - Fork 161
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Improve field count typical case performance #120
Commits on Jan 18, 2023
-
Improve field count typical case performance
The tightest upper bound one can specify on the number of fields in a struct is `sizeof(type) * CHAR_BIT`. So this was previously used when performing a binary search for the field count. This upper bound is extremely loose when considering a typical large struct, which is more likely to contain a relatively small number of relatively large fields rather than the other way around. The binary search range being multiple orders of magnitude larger than necessary wouldn't have been a significant issue if each test was cheap, but they're not. Testing a field count of N costs O(N) memory and time. As a result, the initial few steps of the binary search may be prohibitively expensive. The primary optimization introduced by these changes is to use unbounded binary search, a.k.a. exponential search, instead of the typically loosely bounded binary search. This produces a tight upper bound (within 2x) on the field count to then perform the binary search with. As an upside of this change, the compiler-specific limit placed on the upper bound on the field count to stay within compiler limits could be removed.
Configuration menu - View commit details
-
Copy full SHA for 6312e37 - Browse repository at this point
Copy the full SHA 6312e37View commit details
Commits on Jan 23, 2023
-
Configuration menu - View commit details
-
Copy full SHA for aac7c36 - Browse repository at this point
Copy the full SHA aac7c36View commit details
Commits on Jan 24, 2023
-
In the last CI run, 15 tasks failed with a compiler is out of heap space error. With the jobs running in parallel, it's hard to determine which tasks failed due to their own excessive memory usage and which were well-behaved, but a victim of running when another task consumed all the available memory.
Configuration menu - View commit details
-
Copy full SHA for 57bbe0c - Browse repository at this point
Copy the full SHA 57bbe0cView commit details -
Configuration menu - View commit details
-
Copy full SHA for 096445f - Browse repository at this point
Copy the full SHA 096445fView commit details -
Configuration menu - View commit details
-
Copy full SHA for de5d6f4 - Browse repository at this point
Copy the full SHA de5d6f4View commit details -
Configuration menu - View commit details
-
Copy full SHA for 28bd7f5 - Browse repository at this point
Copy the full SHA 28bd7f5View commit details
Commits on Feb 10, 2023
-
Configuration menu - View commit details
-
Copy full SHA for e80f7aa - Browse repository at this point
Copy the full SHA e80f7aaView commit details -
Configuration menu - View commit details
-
Copy full SHA for ca3ca70 - Browse repository at this point
Copy the full SHA ca3ca70View commit details
Commits on Feb 11, 2023
-
Prevent unbounded field count test growth
This could happen for a type with a constructor accepting a parameter pack. This also prevents unbounded growth in case something goes wrong with the logic and something should have already stopped (or never started).
Configuration menu - View commit details
-
Copy full SHA for dd1ae1c - Browse repository at this point
Copy the full SHA dd1ae1cView commit details
Commits on Sep 5, 2024
-
Configuration menu - View commit details
-
Copy full SHA for ea57b67 - Browse repository at this point
Copy the full SHA ea57b67View commit details -
Configuration menu - View commit details
-
Copy full SHA for 5b2b1cc - Browse repository at this point
Copy the full SHA 5b2b1ccView commit details
Commits on Sep 13, 2024
-
Configuration menu - View commit details
-
Copy full SHA for 170338c - Browse repository at this point
Copy the full SHA 170338cView commit details -
Configuration menu - View commit details
-
Copy full SHA for 63374ef - Browse repository at this point
Copy the full SHA 63374efView commit details
Commits on Sep 20, 2024
-
Configuration menu - View commit details
-
Copy full SHA for a6d0c5f - Browse repository at this point
Copy the full SHA a6d0c5fView commit details -
Configuration menu - View commit details
-
Copy full SHA for 27a5c6e - Browse repository at this point
Copy the full SHA 27a5c6eView commit details -
Configuration menu - View commit details
-
Copy full SHA for 465ff1b - Browse repository at this point
Copy the full SHA 465ff1bView commit details -
Skip inheritance check for non-classes
Makes the evaluation of the field count of huge arrays not result in excessive compiler resource utilization.
Configuration menu - View commit details
-
Copy full SHA for 5546762 - Browse repository at this point
Copy the full SHA 5546762View commit details -
Skip hand-made aggregate check for non-classes
Makes the evaluation of the field count of huge arrays not result in excessive compiler resource utilization.
Configuration menu - View commit details
-
Copy full SHA for 5e655d4 - Browse repository at this point
Copy the full SHA 5e655d4View commit details -
Configuration menu - View commit details
-
Copy full SHA for cbc57cc - Browse repository at this point
Copy the full SHA cbc57ccView commit details
Commits on Sep 30, 2024
-
Configuration menu - View commit details
-
Copy full SHA for 85d05cf - Browse repository at this point
Copy the full SHA 85d05cfView commit details -
Configuration menu - View commit details
-
Copy full SHA for 82770f5 - Browse repository at this point
Copy the full SHA 82770f5View commit details -
Configuration menu - View commit details
-
Copy full SHA for c5424df - Browse repository at this point
Copy the full SHA c5424dfView commit details
Commits on Oct 4, 2024
-
Configuration menu - View commit details
-
Copy full SHA for ee3238e - Browse repository at this point
Copy the full SHA ee3238eView commit details -
Configuration menu - View commit details
-
Copy full SHA for ff14705 - Browse repository at this point
Copy the full SHA ff14705View commit details -
Configuration menu - View commit details
-
Copy full SHA for d222d98 - Browse repository at this point
Copy the full SHA d222d98View commit details -
Configuration menu - View commit details
-
Copy full SHA for ae8ce8d - Browse repository at this point
Copy the full SHA ae8ce8dView commit details -
Verified ok targeting both x86 and x86-64 for: - clang 3.7.1 - clang 19.1.0 - gcc 8.2 - gcc 14.2 - msvc 19.20 - msvc 19.40
Configuration menu - View commit details
-
Copy full SHA for f461689 - Browse repository at this point
Copy the full SHA f461689View commit details -
Configuration menu - View commit details
-
Copy full SHA for 5978e52 - Browse repository at this point
Copy the full SHA 5978e52View commit details -
Configuration menu - View commit details
-
Copy full SHA for 68e6aba - Browse repository at this point
Copy the full SHA 68e6abaView commit details -
Revert "Prevent unnecessary triggering of last-resort assertion"
This reverts commit a6d0c5f. Conflicts: - include/boost/pfr/detail/fields_count.hpp
Configuration menu - View commit details
-
Copy full SHA for 13f29c6 - Browse repository at this point
Copy the full SHA 13f29c6View commit details -
Revert "Add complete type precondition and condition evaluation on pr…
…econditions" This reverts commit 096445f. Conflicts: - include/boost/pfr/detail/fields_count.hpp
Configuration menu - View commit details
-
Copy full SHA for ab3621c - Browse repository at this point
Copy the full SHA ab3621cView commit details -
Configuration menu - View commit details
-
Copy full SHA for d6677de - Browse repository at this point
Copy the full SHA d6677deView commit details -
Configuration menu - View commit details
-
Copy full SHA for cdec333 - Browse repository at this point
Copy the full SHA cdec333View commit details -
Configuration menu - View commit details
-
Copy full SHA for 15e42ea - Browse repository at this point
Copy the full SHA 15e42eaView commit details -
Configuration menu - View commit details
-
Copy full SHA for d643b5c - Browse repository at this point
Copy the full SHA d643b5cView commit details -
Configuration menu - View commit details
-
Copy full SHA for 4adba12 - Browse repository at this point
Copy the full SHA 4adba12View commit details
Commits on Oct 7, 2024
-
Configuration menu - View commit details
-
Copy full SHA for 8395a30 - Browse repository at this point
Copy the full SHA 8395a30View commit details -
Configuration menu - View commit details
-
Copy full SHA for fe6f150 - Browse repository at this point
Copy the full SHA fe6f150View commit details