Repository navigation
Ask the IP Intelligence benchmark only for the property it reads - #117
Merged
Merged
Conversation
… reads The properties move into benchmarkProperties, which the new test calls, with the behaviour unchanged, so the test fails here.
The benchmark asked for RegisteredName and AsnName, so that it ran with the free Asn data file. With the Enterprise data file each lookup then did the work for both properties. It now opens the data file with the low memory profile and asks for RegisteredName where the file has it, and AsnName otherwise.
jwrosewell
marked this pull request as ready for review
November 12, 2026 23:19
This was referenced Nov 13, 2026
Draft
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
The performance figures for IP Intelligence come from the console benchmark
PerformanceBenchmark.java, run with the Enterprise data file. When it does not ask for every Property, the benchmark onmainasked for RegisteredName alone (line 219). #48 made it ask for AsnName as well (lines 245 and 246 onrc), so that it runs with the free Asn data file, which has no RegisteredName. The benchmark still reads one Property, but with the Enterprise data file the extra request lowers the lookups a second it reports, by about 11 per cent onrcagainstmain. The release draft #112 measured that drop in run 43173346463.Run 43283829748 found the cause by moving one change at a time. It used one
ubuntu-22.04-armrunner, the image theUbuntu_ARM_Java_17configuration uses, and 32 rounds. Every tree was built and measured with its ownci/run-performance-tests.ps1, with the same data files and the same generated evidence, and each round ran every tree once with the order turning by one place. IP Intelligence lookups a second:mainmainf69da52rc0b9257frcwithout the AsnName linemainwith the AsnName line addedmainwithrc'scxxsubmodule and its generatedConfigIpiSwig.javaSo the AsnName line accounts for the whole drop in both directions, and with the same request
rcis faster thanmain. Moving the C library alone makes no difference tomain. Device Detection lookups a second were the same in every tree.What the specification says
ip-intelligence-specification/required-examples.md, lines 85 to 87 says "A performance, reload or update example, whose Properties do not matter to what it shows, uses the Asn data file, which is far smaller to download." Neither that file nor the Performance Console section says which Properties a performance example asks for. This change keeps the Asn data file as the default and asks for the one Property the benchmark reads.What changed
Examples only. No package changes.
benchmarkPropertiesopens the data file with the low memory profile, asDataFileHelper.lacksEnterprisePropertiesalready does, and returns RegisteredName where the file has it (the Lite and Enterprise data files) and AsnName otherwise (the free Asn data file). The benchmark asks for that one Property when it does not ask for all of them. The run that asks for every Property is unchanged.PerformanceBenchmarkPropertiesTestchecks the choice with the Enterprise or Lite data file, and with the Asn data file.The first commit, 52c3564, adds the test and moves the two
setPropertycalls intobenchmarkPropertieswith the behaviour unchanged, so that the test fails there. The second, 60302c5, is the change.Tests
Measured with this change
Job 131441587980, one
ubuntu-22.04-armrunner, 18 rounds ofmain,rcand this head taking turns, each measured with its ownci/run-performance-tests.ps1, all three logging the Enterprise data file. IP Intelligence lookups a second:mainf69da52rc0b9257fThis head was higher than
rcin 18 of 18 rounds, by 21.1 per cent at the median, and higher thanmainin 13 of 18, by 7.1 per cent.Build
Full build 43292170844 on head 60302c5 finished green. Every job's
Setting 'PullRequestSha'line gives 60302c5, and Configure printed "Left out 6 macOS entries".Ubuntu_ARM_Java_17reported 350,109 IP Intelligence lookups a second, and its log showsPerformanceBenchmarkPropertiesTestran 2 tests with none failed or skipped. Compare Performance was skipped in this build.macOS was left out of this draft's full build under the 9 November decision. The rc head is built with macOS before it merges into main.
rcmoved to 36c153d (#116) after the build started. #116 changes no file this draft changes and does not move thecxxsubmodule, and the draft merges cleanly, so the head stays at 60302c5.What remains
mainas onrc(.NET, Go, C), so their figures were measured that way throughout. With this change Java asks for fewer Properties than they do. Whether every performance example should ask only for the Property it reads, or all should ask for both, is not decided here. If both is chosen, this draft closes and the lower Java figure becomes the one its history compares with.rcthan onmain.