Check-in [4f0d26907d]
Overview
Comment:Buffer the input on decompressing, not the decompressor itself. This takes pdc -d < linux-3.18.1.tar.pdc > linux-3.18.1.tar down to 11 seconds from 13 minutes :)
Downloads: Tarball | ZIP archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 4f0d26907d45681fbfce5a00fdfbf39163e9fdc7
User & Date: spaskalev on 2014-12-20 17:44:14.642
Other Links: manifest | tags
Context
2014-12-21
01:59
Added a function that reverses the bits in a byte. Coverage: 100.0% of statements. check-in: 2be2ff6bf7 user: spaskalev tags: trunk
2014-12-20
17:44
Buffer the input on decompressing, not the decompressor itself. This takes pdc -d < linux-3.18.1.tar.pdc > linux-3.18.1.tar down to 11 seconds from 13 minutes :) check-in: 4f0d26907d user: spaskalev tags: trunk
13:04
Decompressor might loose part of the underlying buffer array by reslicing, fixed by copy check-in: d516e7425d user: spaskalev tags: trunk
Changes
53
54
55
56
57
58
59
60

61
62
63

64
65
66
67
68
69
70
53
54
55
56
57
58
59

60
61
62

63
64
65
66
67
68
69
70







-
+


-
+








// Decompress the data from the given io.Reader and write it to the given io.Writer
// I/O is buffered for better performance
func decompress(output io.Writer, input io.Reader) int {
	var (
		err          error
		buffer       *bufio.Writer = bufio.NewWriter(output)
		decompressor io.Reader     = predictor.Decompressor(input)
		decompressor io.Reader     = predictor.Decompressor(bufio.NewReader(input))
	)

	_, err = io.Copy(buffer, bufio.NewReader(decompressor))
	_, err = io.Copy(buffer, decompressor)
	if err != nil {
		fmt.Fprintln(os.Stderr, "Error while decompressing.\n", err)
		return 1
	}

	// Flush
	err = buffer.Flush()