size

package module
v0.0.0-...-e7014d1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 2, 2020 License: MIT Imports: 1 Imported by: 0

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's size (MIT 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
package main

import (
	"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

Documentation

Overview

Package size implements interface to size

Package size implements run-time calculation of size of the variable. Source code is based on "binary.Size()" function from Go standard library. size.Of() omits size of slices, arrays and maps containers itself (24, 24 and 8 bytes). When counting maps separate calculations are done for keys and values. Adapted from: https://github.com/DmitriyVTitov/size (MIT License)

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Of

func Of(v interface{}) int

Of returns the size of 'v' in bytes. If there is an error during calculation, Of returns -1.

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL