আমি কি সাজানোর সমান্তরাল করতে পারি?


13

উদাহরণস্বরূপ জন্য bzipআছে pbzip , একটি সমান্তরাল সংস্করণ bzipsortপারফরম্যান্স উন্নতির জন্য এমন কোনও সমান্তরাল সরঞ্জাম আছে কি ?

উত্তর:


12

কোর্টিলস 8.6 (2010-10-15) হিসাবে, জিএনইউ sortইতিমধ্যে যেখানে উপলব্ধ সেখানে বেশ কয়েকটি প্রসেসরের ব্যবহার করার জন্য সমান্তরালভাবে বাছাই করে। সুতরাং, এটি সম্পর্কিত pigzবা pbzip2উন্নতি করতে gzipবা এর ক্ষেত্রে আরও উন্নতি করা যায় না bzip2

যদি আপনার sortসমান্তরাল না হয়, আপনি জিএনইউ কোর্টিলসেরsort সর্বশেষতম সংস্করণ থেকে জিএনইউ চেষ্টা করে ইনস্টল করতে পারেন ।

জিএনইউ সাজানোর সাহায্যে আপনি --parallelবিকল্পের সাহায্যে থ্রেডের সংখ্যা সীমাবদ্ধ করতে পারেন ।


2
সাজান - স্টেবল কমপক্ষে আমার পরীক্ষার কাজের চাপে একটি 15% পারফরম্যান্স বুস্ট দেয়।
jrw32982 23: 07 তে মনিকা

8

একটি জিনিস যা সর্বদা আমাকে সাজানোর ক্ষেত্রে সবচেয়ে বেশি সহায়তা করে তা হ'ল যথাসম্ভব স্মৃতি দেওয়া, যাতে অদলবদল হ্রাস করা যায়, যেমন:

sort -S 20G

4
ধন্যবাদ, এটি এমন কৌশল যা আমি sort -S 50%
ইদানীংও

6

যদি আপনার ফাইলটি যথেষ্ট পরিমাণে বড় হয় তবে বাছাইয়ের ফলে ডিস্কের অদলবদল ঘটতে পারে, কারণ বরাদ্দ ভার্চুয়াল মেমরিটি খুব বেশি বেড়ে চলেছে বা sortপ্রোগ্রাম নিজেই ডিস্ক এবং পিছনে অংশগুলি অদলবদল করে। পুরানো sortবাস্তবায়নগুলিতে এই "ডিস্ক বাফার মাধ্যমে বাছাই করুন" সাজানোর আচরণের সম্ভাবনা বেশি থাকে, কারণ পুরানো দিনগুলিতে বড় ফাইলগুলি সাজানোর একমাত্র উপায় ছিল।

sortএখানে একটি -mবিকল্প রয়েছে যা আপনাকে সহায়তা করতে পারে। ফাইলটিকে খণ্ডগুলিতে ভাগ করা আরও দ্রুত হতে পারে - এর সাথে বলুন split -l- এগুলি স্বাধীনভাবে বাছাই করুন, তারপরে তাদের আবার একত্রিত করুন।

তারপরে আবার এটিও হতে পারে যে এটিই "ডিস্ক বাফার মাধ্যমে বাছাই করুন" যা করে। এটি সাহায্য করে কিনা তা খুঁজে বের করার একমাত্র উপায় হ'ল এটি আপনার নির্দিষ্ট পরীক্ষার লোডে বেঞ্চমার্ক করা। সমালোচনামূলক পরামিতিটি আপনার দেওয়া লাইন গণনা হবে split -l


আপনার উত্তরের জন্য ধন্যবাদ. আমি সঙ্গে কিছু benchmarks পরিচালনা করবে splitএবং mergeএবং দেখুন এটি সাহায্য করে।
মিকু

@ মিকু: আমি দেখতে পাচ্ছি না যে merge(1)এখানে প্রয়োগযোগ্যতা রয়েছে। ব্যবহার sort -m
ওয়ারেন ইয়ং

1
আমার শিথিলতার জন্য দুঃখিত, আমি বলতে চাইছি sort --merge
মিকু

1
আপনি যদি ফাইলটি বিভক্ত করেন এবং টুকরোগুলি বাছাই করেন তবে ঠিক আবার একসাথে রেখে দেবার সময় আপনাকে পুরো জিনিসটি সাজতে হবে? কীভাবে দ্রুত হবে?
টেরডন

2
এটি মার্জটি বাছাই অ্যালগরিদমের এক বৈকল্পিক, এটি উপলব্ধ দ্রুততম বাছাই পদ্ধতিগুলির মধ্যে একটি।
ওয়ারেন ইয়ং

3

আমার ব্যবহার করে খুব উল্লেখযোগ্য লাভ হয়েছিল sort -n, যার জন্য সমস্ত নির্বাচিত কলামগুলিতে বৈজ্ঞানিক স্বরলিপি ছাড়াই সংখ্যাগত মান (ভাসা বা পূর্ণসংখ্যার) প্রয়োজন।

আপনার প্রক্রিয়াতে দুর্দান্ত উন্নতি হতে পারে এমন আরেকটি সম্ভাবনা হ'ল /dev/shmমধ্যস্থতাকারী ফাইলগুলি মোকাবেলায় মেমরি ম্যাপযুক্ত ফোল্ডারটি ব্যবহার করা।


3
export LC_COLLATE=C
export LANG=C
cat big_file | sort > /dev/null

ইউনিকোড সমতা নিয়ম মেনে চলার জন্য সাধারণত লিনাক্স সাজানোর কিছু নিফটি স্টাফ করে ... আপনি যদি লোকেলটি সি তে পরিবর্তন করেন তবে এটি কেবল বাইটে স্যুইচ করে ...

একটি 1.4 গিগাবাইট ফাইলের জন্য আমার মেশিনে পার্থক্যটি 20s বনাম 400 এর (!!!)


ধন্যবাদ, তবে কি LC_ALL=Cযথেষ্ট হবে না?
মিকু

আমি মনে করি ... সম্ভবত LC_COLLATEইতিমধ্যে যথেষ্ট। আমি যতদূর জানি sortব্যবহারসমূহ strcollcomparision এবং র manpage জন্য বলছেন আচরণের উপর নির্ভর করেLC_COLLATE
mt_

0
#! /bin/sh
#config MAX_LINES_PER_CHUNK based on file length
MAX_LINES_PER_CHUNK=1000 
ORIGINAL_FILE=inputfile.txt
SORTED_FILE=outputfile.txt
CHUNK_FILE_PREFIX=$ORIGINAL_FILE.split.
SORTED_CHUNK_FILES=$CHUNK_FILE_PREFIX*.sorted

 #Cleanup any lefover files
rm -f $SORTED_CHUNK_FILES > /dev/null
rm -f $CHUNK_FILE_PREFIX* > /dev/null
rm -f $SORTED_FILE

#Splitting $ORIGINAL_FILE into chunks ...
split -l $MAX_LINES_PER_CHUNK $ORIGINAL_FILE $CHUNK_FILE_PREFIX

for file in $CHUNK_FILE_PREFIX*
do
    sort -n -t , -k 1,1 $file > $file.sorted &
done
wait

#echo "**********SORTED CHUNK FILES*********"
#echo $SORTED_CHUNK_FILES
#Merging chunks to $SORTED_FILE ...
sort  -mn $SORTED_CHUNK_FILES > $SORTED_FILE

#Cleanup any lefover files
rm -f $SORTED_CHUNK_FILES > /dev/null
rm -f $CHUNK_FILE_PREFIX* > /dev/null

ফাইলটি বিভক্ত এবং সাজানো এটি বাছাইয়ের গতি বাড়িয়ে তুলবে


1
ওহে! এই উত্তরটি কেবল কোড ডাম্প হওয়ার পরিবর্তে কী করা উচিত তা ব্যাখ্যা করে উন্নত করা যেতে পারে (এটি যদি কিছু ইনপুটটিতে জিএনইউ সাজানোর চেয়েও দ্রুত হতে পারে, তবে এটি জানতে আগ্রহী হবে!)।
ধাগ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.