ฉันต้องทำรายการคำซ้ำให้ซ้ำซ้อน ฉันลองใช้หลายคำสั่งและทำการวิจัยที่นี่และที่นี่ซึ่งพวกเขาอธิบายว่าวิธีที่เร็วที่สุดในการขจัดความซ้ำซ้อนของรายการคำดูเหมือนจะใช้ awk
awk -> O (n)? จัดเรียง -> O (n บันทึก n)?
อย่างไรก็ตามฉันพบว่าสิ่งนี้ดูเหมือนจะไม่เป็นความจริง นี่คือผลการทดสอบของฉัน:
sort -u input.txt -o output.txt
จริง 0m12.446s
ผู้ใช้ 0m11.347s
sys 0m0.906s
awk '!x[$0]++' input.txt > output.txt
ผู้ใช้0m47.221s จริง0m45.419s
sys 0m1.260s
ดังนั้นการใช้ sort -u จึงเร็วกว่า 3.7 เท่า ทำไมนี้ มีวิธีที่เร็วยิ่งขึ้นในการทำซ้ำซ้อน?
*********** อัปเดต ********
เมื่อมีคนชี้ให้เห็นในความคิดเห็นอาจเป็นไปได้ว่ารายการคำศัพท์ของฉันเรียงลำดับแล้วบ้าง เพื่อแยกความเป็นไปได้นี้ฉันสร้าง wordlist สองรายการโดยใช้สคริปต์ pythonนี้
List1 = 7 Mb
List2 = 690 Mb
ผลการค้นหา awk:
List1
จริง 0m1.643s
0m1.565s ผู้ใช้
SYS 0m0.062s
List2
จริง 2m6.918s
ผู้ใช้ 2m4.499s
sys 0m1.345s
ผลการเรียงลำดับ:
List1
จริง 0m0.724s
ผู้ใช้ 0m0.666s
sys 0m0.048s
List2
จริง 1m27.254s
ผู้ใช้ 1m25.013s
sys 0m1.251s