differences between strings, such as a list of words from a dictionary. Implementation issues The nature of the data to be encoded influences the effectiveness of a particular compression algorithm. Delta encoding performs best when data has small or constant variation; for an unsorted data set, there may be little to no compression possible with this method. In delta encoded transmission over a network where only a single copy of the file is available at each end of the communication channel, special error control codes are used to detect which parts of the file have changed since its previous version. For example, rsync uses a rolling checksum algorithm based on Mark Adler's adler-32 checksum. Sample C code The following C code performs a simple form of delta encoding and decoding on a sequence of characters: void delta_encode(unsigned char *buffer, int length) { unsigned char last = 0; for (int i = 0; i < length; i++) { unsigned char current = buffer[i]; buffer[i] = current - last; last = current; } } void delta_decode(unsigned char *buffer, int length) { unsigned char last = 0; for (int i = 0; i < length; i++) { unsigned char delta = buffer[i]; buffer[i] = delta + last; last = buffer[i]; } } Examples Delta encoding in HTTP Another instance of use of delta encoding is RFC 3229, "Delta encoding in HTTP", which proposes that HTTP servers should be able to send updated Web pages in the form of differences between versions (deltas), which should decrease Internet traffic, as most pages change slowly over time, rather than being completely rewritten repeatedly: The suggested rsync-based framework was implemented in the rproxy system as a pair of HTTP proxies. Like the basic vcdiff-based implementation, both systems are rarely used. Delta copying Delta copying is a fast way of copying a file that is partially changed, when a previous version is present on the destination location. With delta copying, only the changed part of a file is copied. It is usually used in backup or file copying software, often to save bandwidth when copying between computers over a private network or the internet. One notable open-source example is rsync. Online backup Many of the online backup services adopt this methodology, often known simply as deltas, in order to give their users previous versions of the same file from previous backups. This reduces associated costs, not only in