क्या उन linq अनुरोधों की दक्षता में सुधार करना संभव है? मैं दो अलग-अलग loops का उपयोग करता हूं ... क्या आप इस कोड को अनुकूलित करने में मेरी सहायता कर सकते हैं?1 लूप में 2 सरणी पर लिंक?
double[] x = { 2, 3, 1, 5, 7, 2, 3 };
double[] y = { 1, 2, 3, 4, 5, 6, 7 };
IEnumerable<int> range = Enumerable.Range(0, x.Length);
double[] y_sorted = (from n in range orderby x[n] select y[n]).ToArray();
double[] x_sorted = (from n in range orderby x[n] select x[n]).ToArray();
की तरह है कि अगर आप पसंद करते अजगर में इस कोड है:
x_index = argsort(x)
x_sorted = [x[i] for i in x_index]
y_sorted = [y[i] for i in x_index]
आप देखेंगे कि, इस अजगर कोड में, मैं केवल एक ही प्रकार का उपयोग करें। यह इस सी # कोड का मामला नहीं है।
हम अंत में मिलना चाहिए:
x_sorted = { 1, 2, 2, 3, 3, 5, 7 }
y_sorted = { 3, 1, 6, 2, 7, 4, 5 }
फ्रेड
संपादित करें: मैं तो यहाँ (एक छोटे से सुधार के बाद) Diadistis के प्रोग्राम का उपयोग
हम चले: Array.Sort (x, y) (0.05)
द्वारा निम्नलिखित (0.18) का सबसे तेज़ तरीका है int[] x_index = Enumerable.Range(0, x.Length).OrderBy(i => x[i]).ToArray();
double[] x_sorted = x_index.Select(i => x[i]).ToArray();
double[] y_sorted = x_index.Select(i => y[i]).ToArray();
अन्य समाधान मेरे पीसी पर समय खपत में काफी समकक्ष (~ 0.35) हैं।
अगर किसी के पास कोई दिलचस्प विचार है, तो मैं इसे प्रोफाइल कर दूंगा और इस पोस्ट को अपडेट करूँगा।
नहीं, यह मेरे लिए ठीक लग रहा है। क्या आपको शायद पहले वक्तव्य में 'ऑर्डरबी वाई [एन]' का मतलब था? – leppie
नहीं, यह जानबूझकर था। – Frederic
आपका कोड क्या करता है? – dtb