के बीच न्यूलाइन गणना की गति की तुलना में मैं पढ़ने के लिए प्रदर्शन की तुलना कर रहा हूं कि कितनी पंक्तियों में फ़ाइल है।डब्ल्यूसी और स्मॉलटॉक
$ time wc -l bigFile.csv
1673820 bigFile.csv
real 0m0.157s
user 0m0.124s
sys 0m0.062s
और फिर एक साफ Pharo कोर स्मालटाक नवीनतम 1,3
| file lineCount |
Smalltalk garbageCollect.
(Duration milliSeconds: [ file := FileStream readOnlyFileNamed: 'bigFile.csv'.
lineCount := 0.
[ file atEnd ] whileFalse: [
file nextLine.
lineCount := lineCount + 1 ].
file close.
lineCount. ] timeToRun) asSeconds.
15
मैं कैसे तेजी से होने की स्मालटाक कोड में तेजी लाने के कर सकते हैं में:
मैं यह पहली बार WC कमांड लाइन उपकरण का उपयोग किया था या डब्ल्यूसी प्रदर्शन से करीब?
मुझे लगता है कि आपके कोड में सबसे बड़ी बचत फ़ाइल बाइनरी बनाने से नहीं आती है, लेकिन "सामग्री" का उपयोग करके प्रसंस्करण से पहले पूरी फ़ाइल को स्मृति में पढ़ने से। उचित आकार के टुकड़ों में फ़ाइल को पढ़ने के बारे में इसके बारे में किराया देना चाहिए। –
मैंने दोबारा जांच की ... # बाइनरी वास्तव में 10 सेकंड बनाम #asciiValue को कॉल कर रहा है या "कैरेक्टर एलएफ" की तुलना में (यहां तक कि अगर एक अस्थायी में कैश किया गया हो)। #contents ने # सेकंड के साथ एक मैनुअल लूप बनाम 3.5 सेकंड बचाया। –