Overview
| Comment: | Use for range in mtf's encoder for the position table. |
|---|---|
| Downloads: | Tarball | ZIP archive |
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA1: |
3ea011cf07938f5ec605e43ea957f613 |
| User & Date: | spaskalev on 2015-01-14 20:46:02.196 |
| Other Links: | manifest | tags |
Context
|
2015-01-26
| ||
| 20:30 | Added tbd from gophergala/tbd :) check-in: 61b0c5b57a user: spaskalev tags: trunk | |
|
2015-01-14
| ||
| 20:46 | Use for range in mtf's encoder for the position table. check-in: 3ea011cf07 user: spaskalev tags: trunk | |
|
2015-01-11
| ||
| 08:44 | Switched encoding/fibonacci.Encoder back to using a 2-bytes array as a preallocated write buffer. It seems that it otherwise escapes everytime and calls a causes a lot of allocations and subsequent gc work. check-in: 90877fa64f user: spaskalev tags: trunk | |
Changes
Modified src/0dev.org/encoding/mtf/mtf.go
from [76460f96cb]
to [f784336e1a].
| ︙ | ︙ | |||
27 28 29 30 31 32 33 |
type context struct {
table [256]byte
}
// Encodes data in place
func (c *context) encode(data []byte) {
| | | | | | | | 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 |
type context struct {
table [256]byte
}
// Encodes data in place
func (c *context) encode(data []byte) {
for dataIndex, dataValue := range data {
// Loop over the MTF table
for tableIndex, tableValue := range c.table {
if tableValue == dataValue {
// Output the value
data[dataIndex] = byte(tableIndex)
// Shift the table
copy(c.table[1:], c.table[:tableIndex])
// Restore the value in front and break
c.table[0] = dataValue
break
}
}
}
}
// Decode data in place
|
| ︙ | ︙ |
Modified src/0dev.org/encoding/mtf/mtf_test.go
from [74a3c46eb8]
to [7051812004].
| ︙ | ︙ | |||
20 21 22 23 24 25 26 |
io.Copy(&output, decoder)
processed := output.Bytes()
delta := diff.Diff(diff.D{Len1: len(data), Len2: len(processed),
EqualFunc: func(i, j int) bool { return data[i] == processed[j] }})
if len(delta.Added) > 0 || len(delta.Removed) > 0 {
| | | 20 21 22 23 24 25 26 27 28 29 |
io.Copy(&output, decoder)
processed := output.Bytes()
delta := diff.Diff(diff.D{Len1: len(data), Len2: len(processed),
EqualFunc: func(i, j int) bool { return data[i] == processed[j] }})
if len(delta.Added) > 0 || len(delta.Removed) > 0 {
t.Error("Differences detected ", delta, processed)
}
}
|