Улучшение ответа @n.st, в котором используется тот факт, что элементы изначально отсортированы. Это также немного яснее, на мой взгляд.
#!/bin/bash
elements=(Cr Hf Mo Nb Ta Ti V W Zr)
len=${#elements[@]}
(( a_end = len - 3 ))
(( b_end = len - 2 ))
(( c_end = len - 1 ))
(( d_end = len - 0 ))
(( a = 0 ))
while (( a < a_end )); do
(( b = a + 1 ))
while (( b < b_end )); do
(( c = b + 1 ))
while (( c < c_end )); do
(( d = c + 1 ))
while (( d < d_end )); do
mkdir "${elements[$a]}${elements[$b]}${elements[$c]}${elements[$d]}"
(( d++ ))
done
(( c++ ))
done
(( b++ ))
done
(( a++ ))
done
Ключевая часть каждого внутреннего цикла начинается со следующего индекса элемента из окружающего цикла. Это довольно распространенный шаблон для создания всех комбинаций списка элементов.
Время работы:
user@host:~/so$ time./do.sh
real 0m0.140s
user 0m0.085s
sys 0m0.044s
с
user@host:~/so$ ls -1d Cr* Hf* Mo* Nb* Ta* Ti* V* W* Zr* | wc -l
ls: cannot access 'V*': No such file or directory
ls: cannot access 'W*': No such file or directory
ls: cannot access 'Zr*': No such file or directory
126
bonnie++
— интересная программа. Это было приятно, потому что он доступен на EPEL и может быть легко установлен черезyum install bonnie++
Из-за того, что я нетерпелив, я не продвинулся далеко с этим, и я нашел следующее более полезным для удовлетворения моих потребностей прямо сейчас. Это было с сайта bonnie++https://www.jamescoyle.net/how-to/599-benchmark-disk-io-with-dd-and-bonnie
time sh -c "dd if=/dev/zero of=[PATH] bs=[BLOCK_SIZE]k count=[LOOPS] && sync"
На самом деле я не запускал это dd
, используя time
заземление, но для всех, кто заинтересован в этом, кэширование диска в Linux может быть проблемой , поэтому для чтения рекомендуется создать его файл на диске размером больше оперативной памяти,затем создайте другой, чтобы очистить все остатки первого файла в ОЗУ, которые могут исказить результаты, затем выполните чтение первого файла. Я подозреваю, что echo 3 > /proc/sys/vm/drop_caches
также был бы полезен здесь, чтобы получить хорошие результаты чтения/записи.