The main difference between XZ compression and Gzip compression is in the compression algorithms they use. XZ compression is based on the LZMA2 algorithm, which is designed to achieve very high compression ratios. Gzip compression, on the other hand, uses the Deflate algorithm, which is designed to achieve better compression speeds.
Another difference is that XZ compression is usually more efficient than Gzip in terms of file size when compressing larger files. This is because the XZ compression algorithm is designed to detect and store repeating patterns more efficiently. Gzip, on the other hand, is better suited for compressing smaller files, as the Deflate algorithm is faster and more efficient in these cases.
Kernel compression methods and comparisons: GZIP, bzip2, LZMA, XZ, LZO,LZ4,ZSTD
Size
ls -s bzImage
XZ:
4276 bzImage
LZO:
5988 arch/x86/boot/bzImage
LZMA:
4584 arch/x86/boot/bzImage
Compressing root build directory:
[easto@cupcake][/opt/snacklinux_rootfs]$ find . -print | cpio -o -H newc --quiet | gzip -9 > rootfs.gz cpio: File ./rootfs.gz grew, 1048576 new bytes not copied [easto@cupcake][/opt/snacklinux_rootfs]$ ls -s rootfs.gz 7812 rootfs.gz [easto@cupcake][/opt/snacklinux_rootfs]$ find . -print | cpio -o -H newc --quiet | gzip > rootfs.gz cpio: File ./rootfs.gz grew, 1064960 new bytes not copied [easto@cupcake][/opt/snacklinux_rootfs]$ ls -s rootfs.gz 7852 rootfs.gz
Speed:
[easto@cupcake][~/snacklinux]$ cd /opt/snacklinux_rootfs/; time find . -print | cpio -o -H newc --quiet | gzip > /home/easto/snacklinux/rootfs.gz real 0m0.661s user 0m0.607s sys 0m0.052s
[easto@cupcake][/opt/snacklinux_rootfs]$ cd /opt/snacklinux_rootfs/; time find . -print | cpio -o -H newc --quiet | xz > /home/easto/snacklinux/rootfs.xz real 0m4.697s user 0m4.521s sys 0m0.162s