Τι είναι ένα παράλληλο ερώτημα;
Πολλές πτυχές ενός ερωτήματος PLINQ είναι παρόμοιες με τα μη παράλληλα ερωτήματα LINQ σε αντικείμενα. Όπως τα διαδοχικά ερωτήματα LINQ, τα ερωτήματα PLINQ εκτελούν λειτουργίες σε οποιαδήποτε πηγή δεδομένων IEnumerable ή IEnumerable στη μνήμη<T> και αναβάλλουν την εκτέλεση, δηλαδή δεν αρχίζουν να εκτελούνται μέχρι να απαριθμηθεί το ερώτημα. Η κύρια διαφορά είναι ότι το PLINQ προσπαθεί να αξιοποιήσει στο έπακρο όλους τους επεξεργαστές του συστήματός σας. Η μέθοδος είναι να χωρίσετε την προέλευση δεδομένων σε τμήματα και, στη συνέχεια, να εκτελέσετε παράλληλα ερωτήματα σε πολλούς επεξεργαστές για κάθε τμήμα σε ξεχωριστό νήμα εργασίας. Σε πολλές περιπτώσεις, η παράλληλη εκτέλεση σημαίνει ότι τα ερωτήματα εκτελούνται σημαντικά πιο γρήγορα.
Με την παράλληλη εκτέλεση, το PLINQ μπορεί να βελτιώσει σημαντικά την απόδοση (σε σύγκριση με παλαιότερο κώδικα για ορισμένους τύπους ερωτημάτων), συχνά προσθέτοντας απλώς λειτουργίες ερωτήματος AsParallel στην προέλευση δεδομένων. Ωστόσο, ο παραλληλισμός μπορεί να εισαγάγει τη δική του πολυπλοκότητα, επομένως δεν εκτελούνται όλες οι λειτουργίες ερωτημάτων πιο γρήγορα στο PLINQ. Στην πραγματικότητα, ο παραλληλισμός στην πραγματικότητα επιβραδύνει ορισμένα ερωτήματα. Επομένως, είναι σημαντικό να κατανοήσουμε πώς ζητήματα όπως η ταξινόμηση θα επηρεάσουν τα παράλληλα ερωτήματα. Για περισσότερες πληροφορίες, ανατρέξτε στην ενότητα Κατανόηση της επιτάχυνσης στο PLINQ.
Απλό παράδειγμα
Για 10.000 κομμάτια δεδομένων στη συλλογή, ο κωδικός έχει ως εξής:
Άλλα χαρακτηριστικά που χρησιμοποιούνται από το PLINQ
1. Χρησιμοποιώντας το AsSequential, εάν δεν θέλετε να χρησιμοποιήσετε παράλληλα ερωτήματα στη διαδικασία, μπορείτε να χρησιμοποιήσετε αυτήν τη δυνατότητα για επαναφορά σε διαδοχικά ερωτήματα.
2. Χρησιμοποιώντας το AsOrdered, επειδή το PLINQ εκτελείται παράλληλα, τα αποτελέσματα ενδέχεται να μην είναι σε σειρά, τα οποία μπορούν να αναζητηθούν προσθέτοντας τη μέθοδο AsOrdered.
3. Χρησιμοποιήστε το WithDegreeOfParallelism, αυτή η ιδιότητα μπορεί να ορίσει τον αριθμό των CUP παράλληλα στον υπολογιστή.
Σημείωση σκηνής
Σε πολλές περιπτώσεις, τα ερωτήματα μπορούν να παραλληλιστούν, αλλά η επιβάρυνση της ρύθμισης παράλληλων ερωτημάτων μπορεί να αντισταθμίσει τα κέρδη απόδοσης.Εάν το ερώτημα δεν εκτελεί μεγάλο αριθμό υπολογισμών ή εάν η προέλευση δεδομένων είναι μικρή, το ερώτημα PLINQ μπορεί να είναι πιο αργό από ένα διαδοχικό ερώτημα LINQ σε αντικείμενα。 Μπορείτε να χρησιμοποιήσετε την Παράλληλη ανάλυση απόδοσης στον Visual Studio Team Server για να συγκρίνετε τις επιδόσεις διαφόρων ερωτημάτων, να βρείτε σημεία συμφόρησης επεξεργασίας και να προσδιορίσετε εάν τα ερωτήματα εκτελούνται παράλληλα ή διαδοχικά.
Αναφορά:Η σύνδεση με υπερσύνδεσμο είναι ορατή.
|