Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(320)

Side by Side Diff: courgette/third_party/bsdiff_create.cc

Issue 1288703002: [Courgette] Optimize QSufSort to speed up courgette-gen. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix comments and spacing. Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | courgette/third_party/qsufsort.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 bsdiff.c -- Binary patch generator. 2 bsdiff.c -- Binary patch generator.
3 3
4 Copyright 2003 Colin Percival 4 Copyright 2003 Colin Percival
5 5
6 For the terms under which this work may be distributed, please see 6 For the terms under which this work may be distributed, please see
7 the adjoining file "LICENSE". 7 the adjoining file "LICENSE".
8 8
9 ChangeLog: 9 ChangeLog:
10 2005-05-05 - Use the modified header struct from bspatch.h; use 32-bit 10 2005-05-05 - Use the modified header struct from bspatch.h; use 32-bit
11 values throughout. 11 values throughout.
12 --Benjamin Smedberg <benjamin@smedbergs.us> 12 --Benjamin Smedberg <benjamin@smedbergs.us>
13 2005-05-18 - Use the same CRC algorithm as bzip2, and leverage the CRC table 13 2005-05-18 - Use the same CRC algorithm as bzip2, and leverage the CRC table
14 provided by libbz2. 14 provided by libbz2.
15 --Darin Fisher <darin@meer.net> 15 --Darin Fisher <darin@meer.net>
16 2007-11-14 - Changed to use Crc from Lzma library instead of Bzip library 16 2007-11-14 - Changed to use Crc from Lzma library instead of Bzip library
17 --Rahul Kuchhal 17 --Rahul Kuchhal
18 2009-03-31 - Change to use Streams. Added lots of comments. 18 2009-03-31 - Change to use Streams. Added lots of comments.
19 --Stephen Adams <sra@chromium.org> 19 --Stephen Adams <sra@chromium.org>
20 2010-05-26 - Use a paged array for V and I. The address space may be too 20 2010-05-26 - Use a paged array for V and I. The address space may be too
21 fragmented for these big arrays to be contiguous. 21 fragmented for these big arrays to be contiguous.
22 --Stephen Adams <sra@chromium.org> 22 --Stephen Adams <sra@chromium.org>
23 2015-08-03 - Extract qsufsort portion to a separate file. 23 2015-08-03 - Extract qsufsort portion to a separate file.
24 --Samuel Huang <huangs@chromium.org> 24 --Samuel Huang <huangs@chromium.org>
25 2015-08-12 - Interface change to qsufsort search().
26 --Samuel Huang <huangs@chromium.org>
25 */ 27 */
26 28
27 #include "courgette/third_party/bsdiff.h" 29 #include "courgette/third_party/bsdiff.h"
28 30
29 #include <stdlib.h> 31 #include <stdlib.h>
30 #include <algorithm> 32 #include <algorithm>
31 33
32 #include "base/logging.h" 34 #include "base/logging.h"
33 #include "base/memory/scoped_ptr.h" 35 #include "base/memory/scoped_ptr.h"
34 #include "base/strings/string_util.h" 36 #include "base/strings/string_util.h"
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
144 int match_length = 0; 146 int match_length = 0;
145 147
146 while (scan < newsize) { 148 while (scan < newsize) {
147 int pos = 0; 149 int pos = 0;
148 int oldscore = 0; // Count of how many bytes of the current match at |scan| 150 int oldscore = 0; // Count of how many bytes of the current match at |scan|
149 // extend the match at |lastscan|. 151 // extend the match at |lastscan|.
150 152
151 scan += match_length; 153 scan += match_length;
152 for (int scsc = scan; scan < newsize; ++scan) { 154 for (int scsc = scan; scan < newsize; ++scan) {
153 match_length = qsuf::search<PagedArray<int>&>( 155 match_length = qsuf::search<PagedArray<int>&>(
154 I, old, oldsize, newbuf + scan, newsize - scan, 0, oldsize, &pos); 156 I, old, oldsize, newbuf + scan, newsize - scan, &pos);
155 157
156 for ( ; scsc < scan + match_length ; scsc++) 158 for ( ; scsc < scan + match_length ; scsc++)
157 if ((scsc + lastoffset < oldsize) && 159 if ((scsc + lastoffset < oldsize) &&
158 (old[scsc + lastoffset] == newbuf[scsc])) 160 (old[scsc + lastoffset] == newbuf[scsc]))
159 oldscore++; 161 oldscore++;
160 162
161 if ((match_length == oldscore) && (match_length != 0)) 163 if ((match_length == oldscore) && (match_length != 0))
162 break; // Good continuing match, case (1) 164 break; // Good continuing match, case (1)
163 if (match_length > oldscore + 8) 165 if (match_length > oldscore + 8)
164 break; // New seed match, case (2) 166 break; // New seed match, case (2)
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
294 << " extra bytes: " << extra_bytes_length 296 << " extra bytes: " << extra_bytes_length
295 << "\nUncompressed bsdiff patch size " 297 << "\nUncompressed bsdiff patch size "
296 << patch_stream->Length() - initial_patch_stream_length 298 << patch_stream->Length() - initial_patch_stream_length
297 << "\nEnd bsdiff " 299 << "\nEnd bsdiff "
298 << (base::Time::Now() - start_bsdiff_time).InSecondsF(); 300 << (base::Time::Now() - start_bsdiff_time).InSecondsF();
299 301
300 return OK; 302 return OK;
301 } 303 }
302 304
303 } // namespace courgette 305 } // namespace courgette
OLDNEW
« no previous file with comments | « no previous file | courgette/third_party/qsufsort.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698