Created
February 27, 2020 11:20
-
-
Save onokonem/6bf710b85ecb4be6f34c3fc304a7d8ab to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Итого: | |
https://play.golang.org/p/2gcz2XI8ZNA | |
``` | |
BenchmarkPrealloc100-4 8803648 138 ns/op 896 B/op 1 allocs/op | |
BenchmarkZero100-4 7887441 153 ns/op 896 B/op 1 allocs/op | |
BenchmarkNil100-4 7610407 158 ns/op 896 B/op 1 allocs/op | |
BenchmarkPrealloc1000-4 1000000 1195 ns/op 8192 B/op 1 allocs/op | |
BenchmarkZero1000-4 1000000 1120 ns/op 8192 B/op 1 allocs/op | |
BenchmarkNil1000-4 1079455 1072 ns/op 8192 B/op 1 allocs/op | |
BenchmarkPrealloc10000-4 111652 9582 ns/op 81920 B/op 1 allocs/op | |
BenchmarkZero10000-4 136356 7717 ns/op 81920 B/op 1 allocs/op | |
BenchmarkNil10000-4 135385 8163 ns/op 81920 B/op 1 allocs/op | |
BenchmarkPrealloc100000-4 9241 131374 ns/op 802816 B/op 1 allocs/op | |
BenchmarkZero100000-4 16102 78291 ns/op 802816 B/op 1 allocs/op | |
BenchmarkNil100000-4 15561 75536 ns/op 802816 B/op 1 allocs/op | |
BenchmarkPrealloc1000000-4 915 1212400 ns/op 8003585 B/op 1 allocs/op | |
BenchmarkZero1000000-4 1830 575773 ns/op 8003585 B/op 1 allocs/op | |
BenchmarkNil1000000-4 1861 677818 ns/op 8003585 B/op 1 allocs/op | |
BenchmarkPrealloc10000000-4 79 16316018 ns/op 80003077 B/op 1 allocs/op | |
BenchmarkZero10000000-4 130 9195659 ns/op 80003088 B/op 1 allocs/op | |
BenchmarkNil10000000-4 130 8717368 ns/op 80003085 B/op 1 allocs/op | |
``` | |
видно, что на 10К элементов производительность еще практически одинаковая, а на 100К уже - вопреки интуитивным предположениям - вариант с преаллокацией медленнее. | |
глядим в профайлинг: | |
преаллокация | |
``` | |
flat flat% sum% cum cum% | |
0.85s 46.20% 46.20% 0.85s 46.20% runtime.memmove | |
0.41s 22.28% 68.48% 0.41s 22.28% runtime.memclrNoHeapPointers | |
0.31s 16.85% 85.33% 0.31s 16.85% runtime.usleep | |
0.08s 4.35% 89.67% 0.08s 4.35% runtime.nanotime | |
``` | |
без преаллокации | |
``` | |
flat flat% sum% cum cum% | |
1.32s 53.44% 53.44% 1.32s 53.44% runtime.memmove | |
0.70s 28.34% 81.78% 0.70s 28.34% runtime.usleep | |
0.13s 5.26% 87.04% 0.13s 5.26% runtime.nanotime | |
``` | |
`runtime.memclrNoHeapPointers` - это как раз забивание памяти нулями | |
mistery solved |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment