আচ্ছা শফের উত্তরে একটি মন্তব্য অনুসারে তিনি এক মিনিটের মধ্যে 78৮,০০০,০০০ লাইন বদলে ফেলেন।
চ্যালেঞ্জ গ্রহন করা হল...
প্রথমে আমার 78.000.000.000 লাইনের ফাইল দরকার:
seq 1 78 | xargs -n 1 -P 16 -I% seq 1 1000 | xargs -n 1 -P 16 -I% echo "" > lines_78000.txt
seq 1 1000 | xargs -n 1 -P 16 -I% cat lines_78000.txt > lines_78000000.txt
seq 1 1000 | xargs -n 1 -P 16 -I% cat lines_78000000.txt > lines_78000000000.txt
এটি আমাকে 78 বিলিয়ন নিউলাইনস ;-) সহ এএ ফাইল দেয়
এখন শাফ অংশের জন্য:
$ time shuf -n 10 lines_78000000000.txt
shuf -n 10 lines_78000000000.txt 2171.20s user 22.17s system 99% cpu 36:35.80 total
বাধাটি সিপিইউ ছিল এবং একাধিক থ্রেড ব্যবহার করছে না, এটি ১ টি কোর পিন করেছে 100% এ অন্য 15 টি ব্যবহার করা হয়নি।
পাইথন হ'ল আমি নিয়মিত যা ব্যবহার করি তাই এটি এটিকে দ্রুত করার জন্য আমি ব্যবহার করব:
#!/bin/python3
import random
f = open("lines_78000000000.txt", "rt")
count = 0
while 1:
buffer = f.read(65536)
if not buffer: break
count += buffer.count('\n')
for i in range(10):
f.readline(random.randint(1, count))
এটি আমাকে এক মিনিটের মধ্যে পেয়েছে:
$ time ./shuf.py
./shuf.py 42.57s user 16.19s system 98% cpu 59.752 total
আমি i9 এবং স্যামসাং এনভিএম এর সাথে একটি লেনোভো এক্স 1 এর চরম দ্বিতীয় জেনে এটি করেছি যা আমাকে প্রচুর পড়ার এবং লেখার গতি দেয়।
আমি জানি এটি দ্রুততর হতে পারে তবে আমি অন্যদের চেষ্টা করার জন্য কিছু জায়গা রেখে দেব।
লাইন কাউন্টার উত্স: লুথার ব্লিসसेट