Skip to content
This repository was archived by the owner on May 25, 2023. It is now read-only.

Change uint128 from [2]uint64 to a struct of hi/lo to appease compiler #106

Merged
merged 1 commit into from
Dec 31, 2020

Conversation

bradfitz
Copy link
Contributor

If golang/go#24416 gets fixed we could revert this.

name                              old time/op    new time/op    delta
StdIPv4-4                            361ns ± 9%     386ns ± 8%     ~     (p=0.167 n=5+5)
IPv4-4                               273ns ±12%     301ns ±14%     ~     (p=0.238 n=5+5)
IPv4_inline-4                        251ns ± 5%     262ns ±10%     ~     (p=0.730 n=5+5)
StdIPv6-4                            507ns ±18%     490ns ±13%     ~     (p=0.651 n=5+5)
IPv6-4                               414ns ± 8%     416ns ± 6%     ~     (p=1.000 n=5+5)
IPv4Contains-4                      30.1ns ± 4%    13.1ns ±12%  -56.41%  (p=0.008 n=5+5)
ParseIP/v4-4                        55.9ns ± 5%    49.5ns ±10%  -11.35%  (p=0.032 n=5+5)
ParseIP/v6-4                         244ns ± 9%     217ns ± 8%  -10.76%  (p=0.040 n=5+5)
ParseIP/v6_ellipsis-4                157ns ±12%     157ns ± 7%     ~     (p=0.730 n=5+5)
ParseIP/v6_v4-4                      191ns ±12%     168ns ±19%     ~     (p=0.310 n=5+5)
ParseIP/v6_zone-4                    464ns ±21%     448ns ±12%     ~     (p=0.841 n=5+5)
StdParseIP/v4-4                      186ns ± 5%     186ns ±13%     ~     (p=1.000 n=5+5)
StdParseIP/v6-4                      362ns ± 7%     330ns ± 5%   -8.68%  (p=0.016 n=5+5)
StdParseIP/v6_ellipsis-4             258ns ±17%     280ns ± 6%     ~     (p=0.254 n=5+5)
StdParseIP/v6_v4-4                   427ns ±28%     457ns ±15%     ~     (p=0.548 n=5+5)
StdParseIP/v6_zone-4                 285ns ±17%     305ns ±13%     ~     (p=0.421 n=5+5)
IPString/v4-4                        153ns ±21%     122ns ±17%  -19.79%  (p=0.048 n=5+5)
IPString/v6-4                        356ns ± 3%     345ns ±22%     ~     (p=0.151 n=5+5)
IPString/v6_ellipsis-4               346ns ±13%     329ns ±20%     ~     (p=0.548 n=5+5)
IPString/v6_v4-4                     309ns ±15%     266ns ±11%  -13.90%  (p=0.032 n=5+5)
IPString/v6_zone-4                   362ns ±18%     330ns ±21%     ~     (p=0.421 n=5+5)
IPPrefixMasking/IPv4_/32-4          54.8ns ± 4%    15.1ns ± 4%  -72.44%  (p=0.008 n=5+5)
IPPrefixMasking/IPv4_/17-4          54.9ns ± 4%    14.6ns ± 5%  -73.38%  (p=0.008 n=5+5)
IPPrefixMasking/IPv4_/0-4           55.0ns ± 4%    13.5ns ± 6%  -75.50%  (p=0.008 n=5+5)
IPPrefixMasking/IPv6_/128-4         55.0ns ± 1%    15.5ns ± 7%  -71.79%  (p=0.008 n=5+5)
IPPrefixMasking/IPv6_/65-4          54.2ns ± 2%    14.6ns ± 5%  -73.04%  (p=0.008 n=5+5)
IPPrefixMasking/IPv6_/0-4           55.4ns ± 2%    14.9ns ± 9%  -73.06%  (p=0.008 n=5+5)
IPPrefixMasking/IPv6_zone_/128-4    54.4ns ± 1%    15.0ns ±13%  -72.44%  (p=0.008 n=5+5)
IPPrefixMasking/IPv6_zone_/65-4     55.5ns ± 2%    14.8ns ±16%  -73.31%  (p=0.008 n=5+5)
IPPrefixMasking/IPv6_zone_/0-4      54.8ns ± 4%    14.7ns ± 8%  -73.23%  (p=0.008 n=5+5)
ParseIPPort/v4-4                     118ns ± 8%     103ns ± 9%  -12.88%  (p=0.008 n=5+5)
ParseIPPort/v6-4                     318ns ±12%     262ns ± 6%  -17.38%  (p=0.008 n=5+5)
ParseIPPort/v6_ellipsis-4            243ns ±10%     240ns ±19%     ~     (p=0.841 n=5+5)
ParseIPPort/v6_v4-4                  279ns ±14%     237ns ±16%  -14.91%  (p=0.040 n=5+5)
ParseIPPort/v6_zone-4                578ns ± 9%     546ns ± 7%     ~     (p=0.222 n=5+5)
IPRangePrefix-4                      142ns ± 5%      61ns ±11%  -56.74%  (p=0.008 n=5+5)
IPSetFuzz-4                         41.0µs ±16%    33.3µs ±15%  -18.87%  (p=0.016 n=5+5)

Fixes #102

If golang/go#24416 gets fixed we could revert this.

name                              old time/op    new time/op    delta
StdIPv4-4                            361ns ± 9%     386ns ± 8%     ~     (p=0.167 n=5+5)
IPv4-4                               273ns ±12%     301ns ±14%     ~     (p=0.238 n=5+5)
IPv4_inline-4                        251ns ± 5%     262ns ±10%     ~     (p=0.730 n=5+5)
StdIPv6-4                            507ns ±18%     490ns ±13%     ~     (p=0.651 n=5+5)
IPv6-4                               414ns ± 8%     416ns ± 6%     ~     (p=1.000 n=5+5)
IPv4Contains-4                      30.1ns ± 4%    13.1ns ±12%  -56.41%  (p=0.008 n=5+5)
ParseIP/v4-4                        55.9ns ± 5%    49.5ns ±10%  -11.35%  (p=0.032 n=5+5)
ParseIP/v6-4                         244ns ± 9%     217ns ± 8%  -10.76%  (p=0.040 n=5+5)
ParseIP/v6_ellipsis-4                157ns ±12%     157ns ± 7%     ~     (p=0.730 n=5+5)
ParseIP/v6_v4-4                      191ns ±12%     168ns ±19%     ~     (p=0.310 n=5+5)
ParseIP/v6_zone-4                    464ns ±21%     448ns ±12%     ~     (p=0.841 n=5+5)
StdParseIP/v4-4                      186ns ± 5%     186ns ±13%     ~     (p=1.000 n=5+5)
StdParseIP/v6-4                      362ns ± 7%     330ns ± 5%   -8.68%  (p=0.016 n=5+5)
StdParseIP/v6_ellipsis-4             258ns ±17%     280ns ± 6%     ~     (p=0.254 n=5+5)
StdParseIP/v6_v4-4                   427ns ±28%     457ns ±15%     ~     (p=0.548 n=5+5)
StdParseIP/v6_zone-4                 285ns ±17%     305ns ±13%     ~     (p=0.421 n=5+5)
IPString/v4-4                        153ns ±21%     122ns ±17%  -19.79%  (p=0.048 n=5+5)
IPString/v6-4                        356ns ± 3%     345ns ±22%     ~     (p=0.151 n=5+5)
IPString/v6_ellipsis-4               346ns ±13%     329ns ±20%     ~     (p=0.548 n=5+5)
IPString/v6_v4-4                     309ns ±15%     266ns ±11%  -13.90%  (p=0.032 n=5+5)
IPString/v6_zone-4                   362ns ±18%     330ns ±21%     ~     (p=0.421 n=5+5)
IPPrefixMasking/IPv4_/32-4          54.8ns ± 4%    15.1ns ± 4%  -72.44%  (p=0.008 n=5+5)
IPPrefixMasking/IPv4_/17-4          54.9ns ± 4%    14.6ns ± 5%  -73.38%  (p=0.008 n=5+5)
IPPrefixMasking/IPv4_/0-4           55.0ns ± 4%    13.5ns ± 6%  -75.50%  (p=0.008 n=5+5)
IPPrefixMasking/IPv6_/128-4         55.0ns ± 1%    15.5ns ± 7%  -71.79%  (p=0.008 n=5+5)
IPPrefixMasking/IPv6_/65-4          54.2ns ± 2%    14.6ns ± 5%  -73.04%  (p=0.008 n=5+5)
IPPrefixMasking/IPv6_/0-4           55.4ns ± 2%    14.9ns ± 9%  -73.06%  (p=0.008 n=5+5)
IPPrefixMasking/IPv6_zone_/128-4    54.4ns ± 1%    15.0ns ±13%  -72.44%  (p=0.008 n=5+5)
IPPrefixMasking/IPv6_zone_/65-4     55.5ns ± 2%    14.8ns ±16%  -73.31%  (p=0.008 n=5+5)
IPPrefixMasking/IPv6_zone_/0-4      54.8ns ± 4%    14.7ns ± 8%  -73.23%  (p=0.008 n=5+5)
ParseIPPort/v4-4                     118ns ± 8%     103ns ± 9%  -12.88%  (p=0.008 n=5+5)
ParseIPPort/v6-4                     318ns ±12%     262ns ± 6%  -17.38%  (p=0.008 n=5+5)
ParseIPPort/v6_ellipsis-4            243ns ±10%     240ns ±19%     ~     (p=0.841 n=5+5)
ParseIPPort/v6_v4-4                  279ns ±14%     237ns ±16%  -14.91%  (p=0.040 n=5+5)
ParseIPPort/v6_zone-4                578ns ± 9%     546ns ± 7%     ~     (p=0.222 n=5+5)
IPRangePrefix-4                      142ns ± 5%      61ns ±11%  -56.74%  (p=0.008 n=5+5)
IPSetFuzz-4                         41.0µs ±16%    33.3µs ±15%  -18.87%  (p=0.016 n=5+5)

Fixes #102

Signed-off-by: Brad Fitzpatrick <[email protected]>
@danderson
Copy link
Member

Merging this so I can work on cleaning up some code that depends on the representation of the uint128.

@danderson danderson merged commit bf0e22f into master Dec 31, 2020
@mdlayher mdlayher deleted the bradfitz/appease_ssa branch December 31, 2020 13:06
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

uint128 commit caused across-the-board performance regression
2 participants