Skip to content

refactor: optimize port map to switch statement#24

Merged
mosajjal merged 1 commit intogopacket:masterfrom
smira:optimize-port-map
Sep 10, 2023
Merged

refactor: optimize port map to switch statement#24
mosajjal merged 1 commit intogopacket:masterfrom
smira:optimize-port-map

Conversation

@smira
Copy link
Copy Markdown
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.

3 participants