我試圖用bash中的隨機內容生成大型csv。我的機器有6個內核和12G RAM,但我的腳本(見下文)僅需要140秒,只有10k行,3列。有沒有什麼辦法來優化這個腳本?在bash中生成帶有隨機內容的大型csv
在其他語言中生成隨機csv文件是否有相當快的方法?
#!/bin/bash
csv="foo\tbar\tbaz"
start=$(date)
for i in `seq 1 $1`
do rand=$(($i * $RANDOM))
str0="$$"$i
str1=$(echo "$str0" | md5sum)
randstring1="${str1:2:8}"
randstring2="${str1:0:2}"
csv="$csv\n$randstring1\t$randstring2\t$rand"
done
end=$(date)
datediff=$(($(date -d "$end" +%s) - $(date -d "$start" +%s)))
echo -e $csv > my_csv.csv
echo "script took $datediff seconds for $(wc -l my_csv.csv) lines"
這顯然會在編譯語言中快得多。至少,您應該儘量減少對外部工具進行的呼叫次數。我不確定性能的影響,但你也可以在循環中'echo'$ randstring1 \ t $ randstring2 \ t $ rand「'並將其重定向到輸出文件,如'done> my_csv.csv' – 2015-03-25 10:53:08
[ Mockaroo](https://www.mockaroo.com/)有一個你可能感興趣的API。 – MMM 2015-03-25 10:54:58
你能顯示3-4行輸出嗎? – 2015-03-25 11:28:11