Avatar von gawag
  • gawag

586 Beiträge seit 03.11.2011

Re: .NET ist doch nur ein Murkstool für Dilettanten!

IDNG7 schrieb am 13.08.2017 00:29:

gawag schrieb am 12.08.2017 22:12:

Dieses mit zur Laufzeit Optimierungen vornehmen wird bei Java auch schon ewig behauptet und hat noch nie funktioniert. Hast du mal einen vernünftigen Benchmark?
Die Analyse von Code braucht übrigens massig Leistung.

Aber nur einmal.

Wenn du ein tight-loop mit komplexer Berechnung/branching hast, dann kann der JITter je nach Situation viele der Branches komplett als den kompilierten Code eliminieren, die nicht bei jedem Schleifendurchlauf ausgeführt werden.

Geht bei C++ ja nicht, weil es ja kein JIT hat und AOT kompiliert wird und gerade in der Situation kann C# schon mal schneller als C++ sein.

So eine Optimierung mit Code aus Schleife holen geht und wird vom Optimizer auch gemacht.

...

Man hat in Java/C# generell weniger Möglichkeiten Dinge zu optimieren. Einige gibt es bestimmt, aber es sind weniger. Ein paar Beispiele für die Möglichkeiten von Java/C# zu nennen bringt nicht so viel.

Nur weil Java/.NET Anwendungen vielleicht ein wenig länger zu starten brauchen und managed sind, heißt das nicht das sie Langsam geschrieben sind. Es kommt wie bei anderen Programmiersprachen auf den Entwickler an.

Wie macht man denn in Java/.NET z.B. SIMD? Geht das mittlerweile? Oder wie sorge ich für Cache Lokalität meiner Objekte?

Klar kann .NET schon seit n paar Jahren SIMD.

https://www.nuget.org/packages/System.Numerics.Vectors/4.0.0

RyuJIT die NuGet Beschreibung da ist nicht mehr ganz aktuell, RyuJIT wird bei x64 .NET Framework (glaub ab 4.6) und für .NET Core (sowohl x64 als auch x86)

Hm ich finde dort nicht wirklich viele Details außer ein paar Klassennamen. Gehe ich recht in der Annahme, dass ich keinerlei Integer Operationen benutzen kann?
https://software.intel.com/sites/landingpage/IntrinsicsGuide/#techs=SSE2,AVX2
Oder sowas wie mask, pack, unpack, and, or, ...?

Bewerten
- +