Statische Klassen und Methoden - schneller oder nicht?

preview_player
Показать описание
Statische Klassen in der OOP unter C# sind bei mir in allen Projekten verboten, weil das Entkoppeln der Abhängigkeiten zu diesen Elementen nicht möglich ist. Unter dem Hashtag #FragDavid hat Dennis gefragt, was denn mit dem Performance-Vorteil in C# ist, auf den Microsoft sich immer bei privaten statischen Klassen beruft. Da ich das selbst schon oft gehört habe, aber es noch nie gemessen habe, machen wir eine kleine Beispielanwendung dazu und gucken wie groß der Performanceverlust tatsächlich ist.

▬ Über diesen Kanal ▬▬▬▬▬▬▬▬▬▬▬▬

Seit vielen Jahren arbeite ich als Consultant, Coach und Trainer für professionelle Softwareentwicklung mit den Schwerpunkten Softwarequalität, Softwarearchitektur sowie Prozessmanagement. Auf meinem Kanal möchte ich Euch mein Wissen und meine langjährige Erfahrung in diesen Bereichen vermitteln - natürlich kostenlos. Dabei versuche ich stets Euch das Wissen so zu vermitteln, dass Ihr damit direkt in der Praxis loslegen könnt und das ganze immer mit guten Portion Humor. Lernen soll ja schließlich Spaß machen :)

▬ Empfohlene Videos ▬▬▬▬▬▬▬▬▬▬▬▬

▬ Wichtige Links ▬▬▬▬▬▬▬▬▬▬▬▬

▬ Social Media ▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬

▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
Рекомендации по теме
Комментарии
Автор

Wäre ein super case für BenchmarkDotNet

Sunny-whjr
Автор

Der Grund, weshalb ich private statische Methoden mag:

Ich weiß sicher, dass die Methode meinen internen Zustand nicht ändert.
Das heißt aber auch, dass ich das static sofort entferne, wenn ich dadurch irgendwelche Nachteile habe.

Wenn ich also irgendetwas losgekoppeltes habe, was ich nur an einer Stelle private brauche, sich eine eigene Klasse mit Interface und Co nicht lohnt und das sich nicht für irgendwelche Instanz-Informationen interessiert (auch keine Zugriffe), mache ich das immer static. Wenn ich später dann wieder so eine Methode sehe, dann weiß ich: Diese Methode ist unabhängig vom Rest.

Wenn man dann immer mehr solche Methoden ergänzt (oder sie sogar public mucht), dann ist das ein gutes Beispiel für Code, den man in eine eigene Klasse ziehen und als Abhängigkeit reinreichen sollte. Wenn man aber Parameter ergänzen muss, weil die Methode mehr Infos braucht, dann fliegt einfach das Static raus.

Palladin
Автор

die Regeln tun mir in der funktionalen Seele weh ;)

Автор

Das Benchmark ist leider absolut nichtssagend, weil es den Algorithmus testet, nicht den Methodenaufruf.

Ein paar Sachen zusammengefasst:
•Statische Methoden sind beinahe so schnell wie Inline Methoden.
•Instanzmethoden die von der selben Instanz aufgerufen werden sind nur insignifikant langsamer(wenn überhaupt).
•Statische Methoden bleiben schnell auch wenn sie von einer anderen Klasse oder Instanz aufgerufen werden.
•Bei virtuellen Methoden und besonders Interfaces haben statische Methoden deutlich die Nase vorn.
•Methodenaufrufe sind generell so schnell, dass man sich kaum sorgen machen muss, ausser man arbeitet an Performancekritischen Algorithmen.
•Und der wichtigste Punkt:
Niemals über die Performance Sorgen machen, bevor es Probleme gibt.

huyopo