-
Notifications
You must be signed in to change notification settings - Fork 52
/
bench_test.go
120 lines (101 loc) · 2.71 KB
/
bench_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
// Copyright 2016 Albert Nigmatzianov. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
package id3v2
import (
"bytes"
"io/ioutil"
"testing"
)
var frontCoverPicture = mustReadFile(frontCoverPath)
func BenchmarkParseAllFrames(b *testing.B) {
writeTag(b, EncodingUTF8)
musicContent := mustReadFile(mp3Path)
b.ResetTimer()
for n := 0; n < b.N; n++ {
tag, err := ParseReader(bytes.NewReader(musicContent), parseOpts)
if tag == nil || err != nil {
b.Fatal("Error while opening mp3 file:", err)
}
}
}
func BenchmarkParseAllFramesISO(b *testing.B) {
writeTag(b, EncodingISO)
musicContent := mustReadFile(mp3Path)
b.ResetTimer()
for n := 0; n < b.N; n++ {
tag, err := ParseReader(bytes.NewReader(musicContent), parseOpts)
if tag == nil || err != nil {
b.Fatal("Error while opening mp3 file:", err)
}
}
}
func BenchmarkParseArtistAndTitle(b *testing.B) {
writeTag(b, EncodingUTF8)
musicContent := mustReadFile(mp3Path)
b.ResetTimer()
for n := 0; n < b.N; n++ {
opts := Options{Parse: true, ParseFrames: []string{"Artist", "Title"}}
tag, err := ParseReader(bytes.NewReader(musicContent), opts)
if tag == nil || err != nil {
b.Fatal("Error while opening mp3 file:", err)
}
}
}
func BenchmarkWrite(b *testing.B) {
for n := 0; n < b.N; n++ {
benchWrite(b, EncodingUTF8)
}
}
func BenchmarkWriteISO(b *testing.B) {
for n := 0; n < b.N; n++ {
benchWrite(b, EncodingISO)
}
}
func benchWrite(b *testing.B, encoding Encoding) {
tag := NewEmptyTag()
setFrames(tag, encoding)
if _, err := tag.WriteTo(ioutil.Discard); err != nil {
b.Error("Error while writing a tag:", err)
}
}
func writeTag(b *testing.B, encoding Encoding) {
tag, err := Open(mp3Path, Options{Parse: false})
if tag == nil || err != nil {
b.Fatal("Error while opening mp3 file:", err)
}
defer tag.Close()
setFrames(tag, encoding)
if err = tag.Save(); err != nil {
b.Error("Error while saving a tag:", err)
}
}
func setFrames(tag *Tag, encoding Encoding) {
tag.SetTitle("Title")
tag.SetArtist("Artist")
tag.SetAlbum("Album")
tag.SetYear("2016")
tag.SetGenre("Genre")
pic := PictureFrame{
Encoding: encoding,
MimeType: "image/jpeg",
PictureType: PTFrontCover,
Description: "Front cover",
Picture: frontCoverPicture,
}
tag.AddAttachedPicture(pic)
uslt := UnsynchronisedLyricsFrame{
Encoding: encoding,
Language: "eng",
ContentDescriptor: "Content descriptor",
Lyrics: "bogem/id3v2",
}
tag.AddUnsynchronisedLyricsFrame(uslt)
comm := CommentFrame{
Encoding: encoding,
Language: "eng",
Description: "Short description",
Text: "The actual text",
}
tag.AddCommentFrame(comm)
}