2012-04-12 2 views
2

Ich bin ein großer Fan von Generic Lists und verwende sie in jedem Projekt, an dem ich arbeite. Aber ich arbeite gerade an einem anderen Projekt, das von einer externen Partei geschrieben wurde, und finde heraus, dass die Seitenladung ziemlich langsam ist. In einigen Fällen dauert das Laden von Seiten etwas länger als 2 Sekunden.Würde die Verwendung einer generischen Liste über eine DataTable weniger Leistungsaufwand verursachen?

Bei der ersten Untersuchung sind die meisten Seiten mit zahlreichen DataTables übersät, die über 1000 Datenzeilen speichern. Ich hätte gedacht, dass das Deklarieren und Einrichten von DataTable-Spalten zum Overhead beitragen würde.

Jetzt frage ich nur nach der Wahrscheinlichkeit, dass die Performance-Verzögerung reduziert wird, wenn ich generische Listen (List) verwende und LINQ verwende, um die erforderlichen Daten zu filtern.

Ich verstehe, dass es andere Probleme geben könnte, die langsames Laden der Seite verursachen, aber große Datenmengen zu sehen, die durch DataTables manipuliert werden, schien ein bisschen übertrieben zu sein.

+1

Mit Leistungsproblemen raten Sie nicht. Sie messen. Nehmen Sie einen anständigen Profiler auf, um herauszufinden, wo Ihre Hotspots sind und beheben Sie diese. –

+0

Sie sollten weitere Untersuchungen durchführen, bevor Sie Änderungen vornehmen. Vielleicht ist es problematisch, die Daten zum Füllen der DataTables zu bekommen. – Magnus

Antwort

2

Wenn es mehrereDataTable Objekte mit jeweils Tausenden von Zeilen gibt, werden diese auf jeder Seite abgerufen werden? Wenn das so ist, bin ich nicht überrascht, dass es eine Weile dauert - und einfach Listen zu verwenden, wird nicht helfen, da ich davon ausgehen würde, dass der Flaschenhals viele Daten in mehreren Abfragen abruft. Der Aufwand für die Erstellung eines DataTable ist dort wahrscheinlich unbedeutend, IMO. (Im Allgemeinen bevorzuge ich auch Listen, aber aus Gründen der Sauberkeit und nicht der Leistung.)

Natürlich sollten Sie wirklich Profiling die langsamen Seiten, um herauszufinden, wo die Engpässe sind, anstatt zu erraten. Wenn dies ein MVC-Projekt ist, werfen Sie einen Blick auf MiniProfiler.

+0

Ich dachte, dass generische Listen im Allgemeinen effizienter als die Verwendung von DataTables waren. Ich schätze ich lag falsch. :-) Leider verwende ich MVC nicht, aber ich werde einen Blick auf andere .NET Profiler werfen, wenn Sie keine Empfehlungen haben? – sbhomra

+0

@sbhomra: Nein, die Verwendung einer Liste ist möglicherweise effizienter als die Verwendung einer DataTable - aber wenn die meiste Zeit damit verbracht wird * Daten zu holen *, dann sollten Sie sich das ansehen und nicht, was Sie damit machen * nach * holen. Ich habe keine speziellen Empfehlungen für das Web-Profiling, fürchte ich. –

+0

Danke für die Information. Es ist eine Ehre, eine SO-Legende zu haben, als ob du eine auf meine Fragen antwortest. ;-) – sbhomra

Verwandte Themen