LocalIP (Windows): uses GetUnicastIpAddressTable instead of GetAdaptersAddresses - #2614
Closed
4RH1T3CT0R7 wants to merge 1 commit into
Closed
4RH1T3CT0R7 wants to merge 1 commit into
4RH1T3CT0R7 wants to merge 1 commit into
Conversation
…rsAddresses GetAdaptersAddresses() was called twice (size probe, then the real call) and costs about 11 ms on a machine with a few virtual adapters. The addresses now come from GetUnicastIpAddressTable() and the per-interface data from GetIfEntry2(), which is only called for interfaces that pass the default route filter. GetAdaptersAddresses() is still used, with a preallocated buffer, when showFlags is enabled.
Member
|
Applied in 7fdd1d8 and improved it more. Thanks. |
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.
on Windows, LocalIP spends most of its time in GetAdaptersAddresses(), which it calls twice (size probe, then fetch). here that's about 11 ms, the slowest module in the default config. this switches it to GetUnicastIpAddressTable() and GetIfEntry2(), the MIB APIs netif_windows.c already uses. GetAdaptersAddresses() is still called when showFlags is set, since only it has the flags
LocalIP with the default config went from 12.5 ms to 1.0 ms (
--stat, median of 30), the whole run from 46 to 35 ms. text output is identical across 11 LocalIP configs; JSON entries now follow the address table order. the gain depends on the adapter count, this machine has 11 interfaces