यहाँ मेरी अजगर कोड है:अजगर सेट चौराहे तेजी से तो जंग HashSet चौराहे है
len_sums = 0
for i in xrange(100000):
set_1 = set(xrange(1000))
set_2 = set(xrange(500, 1500))
intersection_len = len(set_1.intersection(set_2))
len_sums += intersection_len
print len_sums
और यहाँ मेरी जंग कोड है:
use std::collections::HashSet;
fn main() {
let mut len_sums = 0;
for _ in 0..100000 {
let set_1: HashSet<i32> = (0..1000).collect();
let set_2: HashSet<i32> = (500..1500).collect();
let intersection_len = set_1.intersection(&set_2).count();
len_sums += intersection_len;
}
println!("{}", len_sums);
}
मेरा मानना है कि इन मोटे तौर पर बराबर हैं। मैं निम्नलिखित परिणाम प्राप्त:
time python set_performance.py
50000000
real 0m11.757s
user 0m11.736s
sys 0m0.012s
और
rustc set_performance.rs -O
time ./set_performance 50000000
real 0m17.580s
user 0m17.533s
sys 0m0.032s
(cargo
और --release
के साथ इमारत एक ही परिणाम दे)।
मुझे लगता है कि अजगर के set
सी में कार्यान्वित किया जाता है, और इतनी तेजी से होने की उम्मीद है, लेकिन मैं इसे जंग की तुलना में तेजी होने की उम्मीद नहीं थी। क्या अतिरिक्त प्रकार की जांच करना नहीं होगा कि जंग नहीं होगी?
शायद मैं अपने जंग कार्यक्रम को संकलित करने के तरीके में कुछ खो रहा हूं, क्या कोई अन्य अनुकूलन झंडे हैं जिनका उपयोग करना चाहिए?
एक और संभावना यह है कि कोड वास्तव में समकक्ष नहीं है, और जंग अनावश्यक अतिरिक्त काम कर रही है, क्या मुझे कुछ याद आ रहा है?
अजगर संस्करण:
In [3]: import sys
In [4]: sys.version
Out[4]: '2.7.6 (default, Jun 22 2015, 17:58:13) \n[GCC 4.8.2]'
Rustc संस्करण (मैं जानता हूँ कि 1.6 बाहर है)
$ rustc --version
rustc 1.5.0 (3d7cd77e4 2015-12-04)
मैं ubuntu 14.04
उपयोग कर रहा हूँ और मेरे प्रणाली वास्तुकला x86_64 है।
जब मैं लूप के सेट-बिल्डिंग को स्थानांतरित करता हूं और केवल छेड़छाड़ दोहराता हूं, दोनों मामलों के लिए, जंग python2.7 से तेज है। तो सवाल थोड़ा गलत है। – bluss
@bluss अच्छा बिंदु, मेरी मशीन 'जंग' पर केवल एक छोटा सा तेज है, '0m4.168s' बनाम '0m3.838s'। और शुरुआत में थोड़ा सा समय लग रहा था। एक बार फिर धन्यवाद। – Akavall
@bluss * लेकिन * अगर मैं PyPy3 पर 'set1 और set2' का उपयोग करता हूं तो मुझे 1.0s बनाम 2.3s मिलता है, इसलिए पायथन की लीड में वापस; पी – Veedrac