Suchergebnisse

Suchergebnisse 1-6 von insgesamt 6.

  • Benutzer-Avatarbild

    Scanline-Algorithmus

    jvbsl - - Sourcecode-Austausch

    Beitrag

    msdn.microsoft.com/en-us/libra…lattribute(v=vs.110).aspx Damit solltest das auch auslagern können, ich glaub das bekommt er schön geinlined... Dann wärs vlt. nicht schlecht wenn du System.Numerics vektoren verwendest(falls du das nicht schon tust) und evtl. auch noch an anderen stellen anwendest um bisschen SIMD auszunutzen... Das setzen der Pixel bei Lockbits ist bestimmt nicht das Problem, denn das ist einfach setzen von Memory. Klar Lock/Unlock kostet bissl Zeit, aber das ist erstmal nicht da…

  • Benutzer-Avatarbild

    Scanline-Algorithmus

    jvbsl - - Sourcecode-Austausch

    Beitrag

    Das caching in diesem Fall ist ein positiver Nebeneffekt wenn man für den Prozessor vorhersehbare Datenzugriffe macht und dazu gehört auch eben Memory kontinuirlich durchzugene, aber wenn du das schon machst ist das grundsätzlich schonmal gut, wobei für Scanline es anders auch nicht wirklich Sinn ergibt^^ Statt C#-Quellcode (3 Zeilen) eben so: C#-Quellcode (3 Zeilen) Früher hat das zumindest mal Zeit gespart, da unnötige Array-Range checks gespart werden, was aber ok ist, wenn wir genau Wissen, …

  • Benutzer-Avatarbild

    Scanline-Algorithmus

    jvbsl - - Sourcecode-Austausch

    Beitrag

    ja die DirectBitmap hat nen paar unnötige Dinge drinne. Geh lieber direkt hin und nutze den _data.Scan0 ptr, die Daten darin sind bereits quasi gepinnt(weil es natives memory ist), also kein stress mit dem anpinnen -> somit performanter. Außerdem kann man sich das unnötige Copy der Daten komplett sparen und direkt bearbeiten. Das ganze geht sehr schön mit C# Pointern. Nächste Optimierung dabei ist, du kannst direkt int Pointer verwenden und deine Farben als int angeben, das nutzt nämlich dann au…

  • Benutzer-Avatarbild

    Scanline-Algorithmus

    jvbsl - - Sourcecode-Austausch

    Beitrag

    Hatte mich verguckt und Hauptsächlich LoadFromBitmap angeguckt... Sorry Das ab dem zweiten Absatz gilt trotzdem weiterhin und wären eben Optimierungen für SetPixel/Getpixel. Etwas für den Zugriff mit flachem Index wäre bestimmt auch hilfreich, denn ein inkrement ist schneller als eine Multiplikation und eine addition^^ Achja wie immer für so kleine funktionen(wenns um perf geht): Inlining

  • Benutzer-Avatarbild

    Scanline-Algorithmus

    jvbsl - - Sourcecode-Austausch

    Beitrag

    Naja einfach ein GetColor(int index) anstatt x/y. Manchmal ist x/y nicht so wichtig, oder man hat einfach index++. Wenn das ganze dann geinlined wird sollte das bei zumindest einer eindimensionalen Schleife zu einer Boundary-Check-Optimierung führen, sodass eben nicht bei jedem Aufruf überprüft wird obs innerhalb des Arrays ist oder nicht. Abgesehen von der Optimierung von * kombiniert mit + zu einem inkrement

  • Benutzer-Avatarbild

    Scanline-Algorithmus

    jvbsl - - Sourcecode-Austausch

    Beitrag

    Neue berechnen ist wesentlich schneller als Dictionary^^ Im Dictionary wird ja auch alles in buckets unterteilt und über die GetHashCode funktion in die Buckets aufgeteilt, das ist wesentlich komplizierter als die Multiplikation und Addition, mal abgesehen davon, dass es ein Methoden Call ist, .Net Core inlined es(so vermute ich, da eine struct nicht weiter vererbt werden kann, zumindest sealed class kann er viel inlinen - von interfaces) bei .Net Framework wäre ich mir aber tatsächlich nicht si…