@ cb24 के जवाब आम तौर पर सबसे उपयुक्त है, मैं एक और एक
strings.collect {|x| x.to_sym }
मैं था कुछ मानक और @ cb24 के जवाब ज्यादातर मामलों में सबसे अच्छा काम करता है, जब वहाँ में कुछ और तत्व हैं के साथ कि समाधान की तुलना करना चाहते थे सरणी, लेकिन यदि यह एक बहुत ही छोटी सरणी होती है, तो संग्रह विधि थोड़ा तेज़ी से काम करती है।
मैं यहां कोड और परिणाम प्रकाशित करता हूं, यह मेरा असली पहला बेंचमार्क है इसलिए अगर मुझे कुछ गड़बड़ हो तो कुछ प्रतिक्रिया की सराहना की जाएगी। > प्रतीक और प्रतीक - - मैं इसे दोनों स्ट्रिंग पर किया था
n = 1000000
a = [:a,:b,:c,:d,:e,:f,:g,:h,:i].freeze #A "long" array of symbols
Benchmark.bm do |x|
x.report { n.times { a.map(&:to_s)} }
x.report { n.times { a.collect{|x| x.to_s}} }
end
user system total real
2.040000 0.010000 2.050000 ( 2.056784)
2.100000 0.010000 2.110000 ( 2.118546)
b = [:a, :b].freeze #Small array
Benchmark.bm do |x|
x.report { n.times { b.map(&:to_s)} }
x.report { n.times { b.collect{|x| x.to_s}} }
end
user system total real
0.610000 0.000000 0.610000 ( 0.622231)
0.530000 0.010000 0.540000 ( 0.536087)
w = %w(a b).freeze #Again, a small array, now of Strings
Benchmark.bm do |x|
x.report { n.times { w.map(&:to_sym)} }
x.report { n.times { w.collect{|x| x.to_sym}} }
end
user system total real
0.510000 0.000000 0.510000 ( 0.519337)
0.440000 0.010000 0.450000 ( 0.447990)
y = %w(a b c d e f g h i j k l m n o p q).freeze #And a pretty long one
Benchmark.bm do |x|
x.report { n.times { y.map(&:to_sym)} }
x.report { n.times { y.collect{|x| x.to_sym}} }
end
user system total real
2.870000 0.030000 2.900000 ( 2.928830)
3.240000 0.030000 3.270000 ( 3.371295)
मोड़ अंक मैं गणना नहीं की थी> स्ट्रिंग लेकिन यह काफी रोचक है, मैंने कहीं पढ़ा है कि कुछ सुधार जहां कम सरणियों के साथ बनाया है, के सबसे बाद से वे केवल कुछ तत्व लंबे हैं।
http://stackoverflow.com/questions/800122/best-way-to-convert-strings-to-symbols-in-hash –
@Abe: यह हैश की कुंजी के लिए संभावित डुप्लिकेट। यह सरणी तत्वों के लिए है। – icktoofay
@ एबे यह एक डुप्ली नहीं है, यह हैश के लिए है। (संपादित करें: icktoofay मुझे इसे हराया: पी) – Doorknob