Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Linq in memory performance

  •  12-11-2008, 15:50

    Linq in memory performance

    Hello πάλι, περιπέτειες με linq:

    Είχα να κάνω ένα batch insert σε ένα πινακάκι, περίπου 100K εγγραφές. Το insert το έκανα με SqlBulkCopy. Μέσα στο loop των εγγραφών όμως έκανα ένα lookup σε ένα άλλο πινακάκι (των 200 εγγραφών) που ήταν φορτωμένο με linq (όλα τα lookups μέσα στο ίδιο context βεβαίως). Το performance ήταν αισχρό, περίπου 10sec για 1000 rows. Έτρεξα και profiler, το μόνο που είδα ήταν περιοδικά counts που έκανε το linq στον lookup πίνακα κάθε λίγα δευτερόλεπτα (περιοδικά, όχι σε κάθε lookup).

    Έχοντας λοιπόν κάνει optimize τον κόσμο όλο και μην μπορόντας να βρω άκρη, έτρεξα ant profiler, ο οποίος έβγαλε ένα χέρι από την οθόνη και μου είπε "Αυτός" δείχνοντας το linq lookup με τον αριθμό 99%!!!. Indeed, μόλις φόρτωσα το lookup σε ένα hash table, το performance πήδηξε στα 5 sec για το σύνολο των 100.000 εγγραφών.

    Και ερωτώ, γιατί; Τι δεν κάνω καλά;

    Το linq lookup που αναφέρω είναι: From c In Context.Countries Where c.A2 = a2

    Πως μπορώ να φέρω μια εγγραφή σε normal χρόνους; Δεν βρίσκω κάτι της προκοπής στο web...

    Χρήστος Γεωργακόπουλος
    Δημοσίευση στην κατηγορία:
Δείτε όλες τις δημοσιεύσεις της Θεματική Ενότητας
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems