Skip to content
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

refactor: optimize port map to switch statement #24

Merged
merged 1 commit into from
Sep 10, 2023

Conversation

smira
Copy link
Contributor

@smira smira commented Jul 28, 2023

Initializing huge maps as global variables causes a lot of allocations while importing the package (even if the respective feature is never used).

Rewrite to use switch statements and regen iana_ports.go.

As observed with GODEBUG=inittrace=1:

before:

init github.com/gopacket/gopacket/layers @0.52 ms, 1.7 ms clock, 395496 bytes, 120 allocs

after:

init github.com/gopacket/gopacket/layers @1.0 ms, 1.4 ms clock, 27760 bytes, 86 allocs

Time can be ignored, but reduction in memory allocation is visible.

Initializing huge maps as global variables causes a lot of allocations
while importing the package (even if the respective feature is never
used).

Rewrite to use `switch` statements and regen `iana_ports.go`.

As observed with `GODEBUG=inittrace=1`:

before:

```
init github.com/gopacket/gopacket/layers @0.52 ms, 1.7 ms clock, 395496 bytes, 120 allocs
```

after:

```
init github.com/gopacket/gopacket/layers @1.0 ms, 1.4 ms clock, 27760 bytes, 86 allocs
```

Time can be ignored, but reduction in memory allocation is visible.

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
smira added a commit to smira/talos that referenced this pull request Jul 28, 2023
This new fork seems to be more active. The change itself doesn't fix any
memory allocation, but I submitted a PR for gopacket/gopacket:

gopacket/gopacket#24

Also fix crazy alloc in `tui/components` (this is only relevant for
`talosctl`).

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
smira added a commit to smira/talos that referenced this pull request Jul 28, 2023
This new fork seems to be more active. The change itself doesn't fix any
memory allocation, but I submitted a PR for gopacket/gopacket:

gopacket/gopacket#24

Also fix crazy alloc in `tui/components` (this is only relevant for
`talosctl`).

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
smira added a commit to smira/talos that referenced this pull request Jul 28, 2023
This new fork seems to be more active. The change itself doesn't fix any
memory allocation, but I submitted a PR for gopacket/gopacket:

gopacket/gopacket#24

Also fix crazy alloc in `tui/components` (this is only relevant for
`talosctl`).

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
@mosajjal mosajjal self-assigned this Aug 31, 2023
@mosajjal mosajjal merged commit 0d0aa7b into gopacket:master Sep 10, 2023
smira added a commit to smira/talos that referenced this pull request Sep 11, 2023
See

* siderolabs#7532
* gopacket/gopacket#24

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants