मैंने अपनी रूबी (1.9) स्क्रिप्ट में कुछ चरम देरी देखी और कुछ खुदाई के बाद यह नियमित अभिव्यक्ति मिलान के लिए उबला हुआ।नियमित अभिव्यक्ति - रूबी बनाम पर्ल
पर्ल:
$fname = shift(@ARGV);
open(FILE, "<$fname");
while (<FILE>) {
if (/(.*?) \|.*?SENDING REQUEST.*?TID=(.*?),/) {
print "$1: $2\n";
}
}
रूबी: मैं पर्ल में और रूबी में निम्नलिखित परीक्षण स्क्रिप्ट का उपयोग कर रहा
f = File.open(ARGV.shift)
while (line = f.gets)
if /(.*?) \|.*?SENDING REQUEST.*?TID=(.*?),/.match(line)
puts "#{$1}: #{$2}"
end
end
मैं दोनों लिपियों के लिए एक ही इनपुट का उपयोग, एक केवल 442 9 0 लाइनों के साथ फ़ाइल करें। हर एक के लिए समय है:
पर्ल:
[email protected]:~/bin/local/project$ time ./try.pl input >/dev/null
real 0m0.049s
user 0m0.040s
sys 0m0.000s
रूबी:
[email protected]:~/bin/local/project$ time ./try.rb input >/dev/null
real 1m5.106s
user 1m4.910s
sys 0m0.010s
मुझे लगता है कि मैं कुछ बहुत बेवकूफ कर रहा हूँ, किसी भी सुझाव?
धन्यवाद
आप की कोशिश की है 'अगर लाइन = ~ /(.*) \ |?।?।?। * अनुरोध भेजा जा रहा * टीआईडी = (*), /'? यह रूबी में भी काम करता है, अगर यह अलग प्रदर्शन विशेषताओं में है तो मैं उत्सुक हूं। –