VeraCrypt

Documentation >> Pipelining

Pipelining

When encrypting or decrypting data, VeraCrypt uses so-called pipelining (asynchronous processing). While an application is loading a portion of a file from a VeraCrypt-encrypted volume/drive, VeraCrypt is automatically decrypting it (in RAM). Thanks to pipelining, the application does not have wait for any portion of the file to be decrypted and it can start loading other portions of the file right away. The same applies to encryption when writing data to an encrypted volume/drive.
Pipelining allows data to be read from and written to an encrypted drive as fast as if the drive was not encrypted (the same applies to file-hosted and partition-hosted VeraCrypt volumes).*
Note: Pipelining is implemented only in the Windows versions of VeraCrypt.

 


* Some solid-state drives compress data internally, which appears to increase the actual read/write speed when the data is compressible (for example, text files). However, encrypted data cannot be compressed (as it appears to consist solely of random "noise" without any compressible patterns). This may have various implications. For example, benchmarking software that reads or writes compressible data (such as sequences of zeroes) will report lower speeds on encrypted volumes than on unencrypted volumes (to avoid this, use benchmarking software that reads/writes random or other kinds of uncompressible data).

/a> 15 16 17 18 19 20 21
TARGETNAME=veracrypt
TARGETTYPE=DRIVER

USER_C_FLAGS=$(USER_C_FLAGS) -D_UNICODE
LINKER_FLAGS=$(LINKER_FLAGS) -map

INCLUDES = ../Common;../Crypto

SOURCES = \
	DriveFilter.c \
	DumpFilter.c \
	EncryptedIoQueue.c \
	Ntdriver.c \
	Ntvol.c \
	VolumeFilter.c \
	Driver.rc

TARGETLIBS = \
	$(SDK_LIB_PATH)/uuid.lib \
	../Common/obj$(BUILD_ALT_DIR)/*/Common.lib \
	../Crypto/obj$(BUILD_ALT_DIR)/*/Crypto.lib