deepcopy

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

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

Go to latest
Published: Dec 4, 2022 License: MIT Imports: 8 Imported by: 1

README

//小对象测试 goos: windows

goarch: amd64

cpu: Intel(R) Xeon(R) CPU E5-2670 0 @ 2.60GHz

BenchmarkCopyByJson

BenchmarkCopyByJson-16 300951 3624 ns/op 1104 B/op 9 allocs/op

BenchmarkCopyByJson-16 333441 3637 ns/op 1104 B/op 9 allocs/op

BenchmarkCopyByJson-16 333435 3619 ns/op 1104 B/op 9 allocs/op

BenchmarkCopyByMsgPack

BenchmarkCopyByMsgPack-16 214356 5489 ns/op 538 B/op 16 allocs/op

BenchmarkCopyByMsgPack-16 214350 5485 ns/op 538 B/op 16 allocs/op

BenchmarkCopyByMsgPack-16 222127 5468 ns/op 538 B/op 16 allocs/op

BenchmarkCopyByGob

BenchmarkCopyByGob-16 18813 63765 ns/op 12893 B/op 369 allocs/op

BenchmarkCopyByGob-16 19053 63382 ns/op 12894 B/op 369 allocs/op

BenchmarkCopyByGob-16 18784 63385 ns/op 12894 B/op 369 allocs/op

BenchmarkCopy

BenchmarkCopy-16 2269152 524.7 ns/op 88 B/op 2 allocs/op

BenchmarkCopy-16 2281935 523.5 ns/op 88 B/op 2 allocs/op

BenchmarkCopy-16 2282097 526.6 ns/op 88 B/op 2 allocs/op

BenchmarkCopyByGoGo

BenchmarkCopyByGoGo-16 4820786 247.6 ns/op 96 B/op 2 allocs/op

BenchmarkCopyByGoGo-16 4859839 247.7 ns/op 96 B/op 2 allocs/op

BenchmarkCopyByGoGo-16 4835924 251.9 ns/op 96 B/op 2 allocs/op

//大对象faster测试 使用gogofaster编译出的pb对象

goos: windows

goarch: amd64

cpu: Intel(R) Xeon(R) CPU E5-2670 0 @ 2.60GHz

BenchmarkCopyByJson

BenchmarkCopyByJson-16 999 1168981 ns/op 181627 B/op 2162 allocs/op

BenchmarkCopyByJson-16 1016 1184009 ns/op 181691 B/op 2162 allocs/op

BenchmarkCopyByJson-16 1005 1174328 ns/op 181759 B/op 2162 allocs/op

BenchmarkCopyByMsgPack

BenchmarkCopyByMsgPack-16 792 1491351 ns/op 203560 B/op 1528 allocs/op

BenchmarkCopyByMsgPack-16 794 1499519 ns/op 203561 B/op 1528 allocs/op

BenchmarkCopyByMsgPack-16 794 1484412 ns/op 203560 B/op 1528 allocs/op

BenchmarkCopyByGob

BenchmarkCopyByGob-16 5001 239639 ns/op 82653 B/op 963 allocs/op

BenchmarkCopyByGob-16 5002 240326 ns/op 82655 B/op 963 allocs/op

BenchmarkCopyByGob-16 4898 237643 ns/op 82654 B/op 963 allocs/op

BenchmarkCopy

BenchmarkCopy-16 6313 180076 ns/op 35416 B/op 357 allocs/op

BenchmarkCopy-16 6856 178741 ns/op 35416 B/op 357 allocs/op

BenchmarkCopy-16 7060 180655 ns/op 35416 B/op 357 allocs/op

BenchmarkCopyByGoGo

BenchmarkCopyByGoGo-16 10000 114563 ns/op 72105 B/op 817 allocs/op

BenchmarkCopyByGoGo-16 10000 114563 ns/op 72104 B/op 817 allocs/op

BenchmarkCopyByGoGo-16 10000 115263 ns/op 72104 B/op 817 allocs/op

PASS

ok command-line-arguments 19.847s

//大对象测试 使用gogofast编译出的pb对象

goos: windows

goarch: amd64

cpu: Intel(R) Xeon(R) CPU E5-2670 0 @ 2.60GHz

BenchmarkCopyByJson

BenchmarkCopyByJson-16 974 1214192 ns/op 190305 B/op 2625 allocs/op

BenchmarkCopyByJson-16 975 1218107 ns/op 190300 B/op 2625 allocs/op

BenchmarkCopyByJson-16 967 1204373 ns/op 190477 B/op 2625 allocs/op

BenchmarkCopyByMsgPack

BenchmarkCopyByMsgPack-16 730 1637848 ns/op 220040 B/op 2345 allocs/op

BenchmarkCopyByMsgPack-16 722 1626772 ns/op 220040 B/op 2345 allocs/op

BenchmarkCopyByMsgPack-16 726 1641516 ns/op 220040 B/op 2345 allocs/op

BenchmarkCopyByGob

BenchmarkCopyByGob-16 3807 312971 ns/op 94880 B/op 1510 allocs/op

BenchmarkCopyByGob-16 3870 312739 ns/op 94877 B/op 1510 allocs/op

BenchmarkCopyByGob-16 3807 316471 ns/op 94882 B/op 1510 allocs/op

BenchmarkCopy

BenchmarkCopy-16 4208 271862 ns/op 43768 B/op 820 allocs/op

BenchmarkCopy-16 4285 266926 ns/op 43768 B/op 820 allocs/op

BenchmarkCopy-16 4363 264360 ns/op 43768 B/op 820 allocs/op

BenchmarkCopyByGoGo

BenchmarkCopyByGoGo-16 8574 129770 ns/op 80456 B/op 1280 allocs/op

BenchmarkCopyByGoGo-16 8574 129963 ns/op 80456 B/op 1280 allocs/op

BenchmarkCopyByGoGo-16 9234 129480 ns/op 80456 B/op 1280 allocs/op

PASS

ok command-line-arguments 19.131s

总结: 大对象拷贝: gogo > reflect > gob > json > msgpack

小对象拷贝: gogo > reflect > json > msgpack > gob

1.对pb对象进行拷贝使用gogo序列化与反序列化的速度是最快的,但是不能用与非pb对象的拷贝(faster生成的协议序列化比fast生成的协议更快)

2.其他对象拷贝使用反射实现的Copy是最快的 CopyAll 可以拷贝私有成员变量, 其他放置均不支持私有成员变量的拷贝

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Copy

func Copy[T any](src T) T

Copy[T any]

@Description: 拷贝结构体公共字段, 不支持chan
@param src
@return T

func CopyAll

func CopyAll[T any](src T) T

CopyAll[T any]

@Description:  拷贝结构体所有字段(包含私有字段), 不支持chan
@param src
@return T

func CopyByGoGo

func CopyByGoGo[T proto.Message](src T) T

CopyByGoGo[T proto.Message]

@Description: 协议拷贝 不能拷贝私有字段
@param src
@return T

func CopyByGob

func CopyByGob[T any](src T) T

CopyByGob[T any]

@Description: 不能拷贝私有字段
@param src
@return T

func CopyByJson

func CopyByJson[T any](src T) T

CopyByJson[T any]

@Description: 不能拷贝私有字段
@param src
@return T

func CopyByMsgPack

func CopyByMsgPack[T any](src T) T

CopyByMsgPack[T any]

@Description: 不能拷贝私有字段
@param src
@return T

Types

This section is empty.

Jump to

Keyboard shortcuts

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