Hi, I did some testing on !x86. I changed LZMA_RANGE_DECODER_CONFIG to different values run a test and looked at the MiB/s value. xz_0 means LZMA_RANGE_DECODER_CONFIG was 0, xz_1 means the define was set to 1. I touched src/liblzma/lzma/lzma_decoder.c and rebuilt xz. I pinned the shell to a single CPU and run test for archive (-tv) for one file three times. This are the results:
arm64 (Lenovo HR350A): ----=== xz 5.4.1 ===---- linux-6.7.5.tar.xz (1/1) 100 % 134.9 MiB / 1,386.4 MiB = 0.097 110 MiB/s 0:12 linux-6.7.5.tar.xz (1/1) 100 % 134.9 MiB / 1,386.4 MiB = 0.097 110 MiB/s 0:12 linux-6.7.5.tar.xz (1/1) 100 % 134.9 MiB / 1,386.4 MiB = 0.097 110 MiB/s 0:12 ----============---- ----=== ./xz_0 ===---- linux-6.7.5.tar.xz (1/1) 100 % 134.9 MiB / 1,386.4 MiB = 0.097 115 MiB/s 0:12 linux-6.7.5.tar.xz (1/1) 100 % 134.9 MiB / 1,386.4 MiB = 0.097 115 MiB/s 0:12 linux-6.7.5.tar.xz (1/1) 100 % 134.9 MiB / 1,386.4 MiB = 0.097 115 MiB/s 0:12 ----============---- ----=== ./xz_1 ===---- linux-6.7.5.tar.xz (1/1) 100 % 134.9 MiB / 1,386.4 MiB = 0.097 108 MiB/s 0:12 linux-6.7.5.tar.xz (1/1) 100 % 134.9 MiB / 1,386.4 MiB = 0.097 108 MiB/s 0:12 linux-6.7.5.tar.xz (1/1) 100 % 134.9 MiB / 1,386.4 MiB = 0.097 108 MiB/s 0:12 ----============---- ----=== ./xz_3 ===---- linux-6.7.5.tar.xz (1/1) 100 % 134.9 MiB / 1,386.4 MiB = 0.097 109 MiB/s 0:12 linux-6.7.5.tar.xz (1/1) 100 % 134.9 MiB / 1,386.4 MiB = 0.097 109 MiB/s 0:12 linux-6.7.5.tar.xz (1/1) 100 % 134.9 MiB / 1,386.4 MiB = 0.097 109 MiB/s 0:12 ----============---- ----=== ./xz_7 ===---- linux-6.7.5.tar.xz (1/1) 100 % 134.9 MiB / 1,386.4 MiB = 0.097 109 MiB/s 0:12 linux-6.7.5.tar.xz (1/1) 100 % 134.9 MiB / 1,386.4 MiB = 0.097 109 MiB/s 0:12 linux-6.7.5.tar.xz (1/1) 100 % 134.9 MiB / 1,386.4 MiB = 0.097 109 MiB/s 0:12 ----============---- ----=== ./xz_f ===---- linux-6.7.5.tar.xz (1/1) 100 % 134.9 MiB / 1,386.4 MiB = 0.097 107 MiB/s 0:12 linux-6.7.5.tar.xz (1/1) 100 % 134.9 MiB / 1,386.4 MiB = 0.097 107 MiB/s 0:12 linux-6.7.5.tar.xz (1/1) 100 % 134.9 MiB / 1,386.4 MiB = 0.097 107 MiB/s 0:12 ----============---- RiscV (HiFive Unmatched) ----=== xz 5.4.5 ===---- linux-6.7.5.tar.xz (1/1) 100 % 134,9 MiB / 1.386,4 MiB = 0,097 30 MiB/s 0:45 linux-6.7.5.tar.xz (1/1) 100 % 134,9 MiB / 1.386,4 MiB = 0,097 30 MiB/s 0:46 linux-6.7.5.tar.xz (1/1) 100 % 134,9 MiB / 1.386,4 MiB = 0,097 30 MiB/s 0:45 ----============---- ----=== ./xz_0 ===---- linux-6.7.5.tar.xz (1/1) 100 % 134,9 MiB / 1.386,4 MiB = 0,097 32 MiB/s 0:43 linux-6.7.5.tar.xz (1/1) 100 % 134,9 MiB / 1.386,4 MiB = 0,097 32 MiB/s 0:43 linux-6.7.5.tar.xz (1/1) 100 % 134,9 MiB / 1.386,4 MiB = 0,097 32 MiB/s 0:43 ----============---- ----=== ./xz_1 ===---- linux-6.7.5.tar.xz (1/1) 100 % 134,9 MiB / 1.386,4 MiB = 0,097 31 MiB/s 0:44 linux-6.7.5.tar.xz (1/1) 100 % 134,9 MiB / 1.386,4 MiB = 0,097 31 MiB/s 0:44 linux-6.7.5.tar.xz (1/1) 100 % 134,9 MiB / 1.386,4 MiB = 0,097 31 MiB/s 0:44 ----============---- ----=== ./xz_3 ===---- linux-6.7.5.tar.xz (1/1) 100 % 134,9 MiB / 1.386,4 MiB = 0,097 30 MiB/s 0:45 linux-6.7.5.tar.xz (1/1) 100 % 134,9 MiB / 1.386,4 MiB = 0,097 31 MiB/s 0:45 linux-6.7.5.tar.xz (1/1) 100 % 134,9 MiB / 1.386,4 MiB = 0,097 31 MiB/s 0:45 ----============---- ----=== ./xz_7 ===---- linux-6.7.5.tar.xz (1/1) 100 % 134,9 MiB / 1.386,4 MiB = 0,097 31 MiB/s 0:45 linux-6.7.5.tar.xz (1/1) 100 % 134,9 MiB / 1.386,4 MiB = 0,097 31 MiB/s 0:44 linux-6.7.5.tar.xz (1/1) 100 % 134,9 MiB / 1.386,4 MiB = 0,097 31 MiB/s 0:44 ----============---- ----=== ./xz_f ===---- linux-6.7.5.tar.xz (1/1) 100 % 134,9 MiB / 1.386,4 MiB = 0,097 30 MiB/s 0:46 linux-6.7.5.tar.xz (1/1) 100 % 134,9 MiB / 1.386,4 MiB = 0,097 30 MiB/s 0:45 linux-6.7.5.tar.xz (1/1) 100 % 134,9 MiB / 1.386,4 MiB = 0,097 30 MiB/s 0:45 ----============---- Based on this it looks like the `0' variant is the best one. Is my test too simple and does not cover "everything / wide range of decodings"? Sebastian