Start Debugging

Tag: comparison

72 Beiträge · Seite1von8

FileSystemInfo.LastWriteTime-Setter vs. File.SetLastWriteTime in .NET
Beide enden im selben Betriebssystemaufruf, der geschriebene Zeitstempel ist also identisch. Die Unterschiede liegen drumherum: welcher Cache invalidiert wird, ob Verzeichnisse unter Windows funktionieren, wie ein Nicht-UTC-DateTime umgerechnet wird und ob sich ein offenes Handle als Ziel angeben lässt. Verwenden Sie File.SetLastWriteTimeUtc, bei geöffneter Datei per Handle. Geprüft mit .NET 10.0.10.
ref-T-Schleife vs. Span<T>-Indizierung in C#: warum die Span-Variante in .NET 10 gleich schnell oder schneller ist
In .NET 10 wird eine einfache for-Schleife über span[i], begrenzt durch span.Length, zu einer Schleife ohne Bounds Check, mit Strength Reduction und abwärts zählendem Zähler kompiliert. Eine handgeschriebene Unsafe.Add(ref r, i)-Schleife mit int-Index behält eine Vorzeichenerweiterung und einen aufwärts zählenden Vergleich und war in der Messung 2 bis 5 % langsamer. Benchmarks und JIT-Disassembly für arm64 und x64 auf .NET 10.0.10.
shared_preferences vs eine JSON-Datei mit path_provider zum Speichern von Einstellungen in Flutter
shared_preferences (SharedPreferencesWithCache) für eine Handvoll flacher Flags, eine JSON-Datei in getApplicationSupportDirectory für ein strukturiertes Einstellungsobjekt. Behandelt das atomare Schreibmuster, die Race Condition bei parallelen Speichervorgängen, die Documents-Ordner-Falle unter Windows und Linux, Web-Unterstützung und gemessene Schreibkosten unter Flutter 3.44.8.
Lazy<T> vs LazyInitializer.EnsureInitialized vs Double-Checked Locking in C#
Verwenden Sie standardmäßig Lazy<T>: Es führt die Factory genau einmal aus, speichert Ausnahmen zwischen, und seine Lesezugriffe sind nach der Initialisierung zu billig, um messbar zu sein. Nutzen Sie LazyInitializer.EnsureInitialized, wenn Sie viele Felder oder Array-Elemente lazy befüllen und sich ein zusätzliches Objekt pro Wert nicht leisten können. Handgeschriebenes Double-Checked Locking lohnt sich unter .NET 10 fast nie.
FileSystemWatcher vs. Polling zur Erkennung von Dateiänderungen auf einer Netzwerkfreigabe in .NET
Auf einer SMB- oder NFS-Freigabe ist Polling die maßgebliche Quelle und FileSystemWatcher bestenfalls ein Hinweis. FileSystemWatcher verpasst Remote-Änderungen unter Linux und macOS, läuft über seinen 64-KB-Netzwerkpuffer über und stoppt endgültig, wenn die Verbindung abbricht. Verwenden Sie einen periodischen Snapshot-Vergleich und lassen Sie den Watcher nur einen früheren Scan auslösen. Geprüft mit .NET 10.0.10.
Weiter