Start Debugging

Tägliche Notizen zu .NET, C#, EF Core, MAUI, Blazor und Flutter, für Entwicklerinnen und Entwickler, die liefern.

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.