Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/skeptycal/size
https://github.com/skeptycal/size
Last synced: 3 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/skeptycal/size
- Owner: skeptycal
- License: mit
- Created: 2020-12-02T20:30:54.000Z (almost 4 years ago)
- Default Branch: master
- Last Pushed: 2020-12-02T20:31:03.000Z (almost 4 years ago)
- Last Synced: 2023-03-02T15:54:18.066Z (over 1 year ago)
- Language: Go
- Homepage:
- Size: 8.79 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Security: SECURITY.md
Awesome Lists containing this project
README
# size - memory consumption at runtime
>Measures the size of an object in your Go program at runtime based on `binary.Size()` from the Go standard library.
Adapted from [DmitriyVTitov](https://github.com/DmitriyVTitov)'s [size](https://github.com/DmitriyVTitov/size) ([MIT License](LICENSE))
Features:
- supports non-fixed size variables and struct fields: `struct`, `int`, `slice`, `string`, `map`;
- supports complex types including structs with non-fixed size fields;
- supports all basic types (numbers, `bool`);
- supports `chan` and `interface`;
- supports pointers;
- implements infinite recursion detection (i.e. `pointer` inside `struct field` references to parent `struct`).### Usage example
```go
package mainimport (
"fmt""github.com/skeptycal/size"
)func main() {
a := struct {
a int
b string
c bool
d int32
e []byte
f [3]int64
}{
a: 10, // 8 bytes
b: "Text", // 4 bytes
c: true, // 1 byte
d: 25, // 4 bytes
e: []byte{'c', 'd', 'e'}, // 3 bytes
f: [3]int64{1, 2, 3}, // 24 bytes
}fmt.Println(size.Of(a))
}// Output: 44
```