Ich möchte gerne die DCT-Frequenzen eines Video-Frames zwischenspeichern. Wenn ich ein Int-Array von 720x576 nehme ist die Anwendung super langsam. Kann ich Marshall oder Pointer missbrauchen um so etwas zu beschleunigen? Bei RGB-Werten lief es sehr gut. DCT-Koeffizienten haben aber einen Wertebereich von -2048 bis 2048. Vielleicht habt ihr aber auch einen besseren Rat.
Gruss
Digi333
Was ist mit Int16[,] ???
**"Zufall ist das Pseudonym Gottes, wenn er nicht selbst unterschreiben will.” **
Anatole France
Original von digi333
Gibt es eine Möglichkeit mit Pointer unter C# zu arbeiten???
Ja, guckst du in der Hilfe unter "unsafe". Aber schonmal deinen Code ge-profiled?
Hallo,
Original von digi333
Schlecht... Arrays sind generell ziemlich langsam.
hmm, dass kann ich mir gar nicht so recht vorstellen.
In einer Anwendungen verwende ich Arrays mit über 100 Millionen Elementen, und diese läuft dennoch sehr schnell.
Ich schätze mal eher dass das Problem wo anders liegt und nicht der Zugriff auf das Array der bremsende Faktor hier ist.
Keine Ahnung warum Arrays bei mir immer so langsam sind. Mit ArrayList geht alles wesentlich schneller. Hatte vorher die einzelnen DCT-Koeffizienten jedes Macroblockes in ein "großes" Array schreiben lassen. Jetzt speicher ich jeden Macroblock in eine Liste. Geht wesentlich besser.
Frag mich warum...
nimm doch mal was aus generics list<int> oder sowas
Hallo digi333,
Gibt es eine Möglichkeit mit Pointer unter C# zu arbeiten???
wie oft, willst du Fragen in der Art eigentlich noch stellen? Du hast dich mit dem Thema doch nun schon ausgiebig beschäftigt. Gerade in dem letzten Thread ist wie aufgefallen, wie viel man dir vorkauen muss. Es wäre an der Zeit, mehr Eigeninitiative zu entwickeln und dich selber durchzubeißen.
Außerdem solltest du die Suche mehr benutzen. So wie es klingt willst du sowas in der Art: Byte-Array: Dimension ändern
Mit ArrayList geht alles wesentlich schneller.
Das halte ich für unwahrscheinlich, da ArrayList ist im Gegenteil in der Regel wesentlich langsamer ist.
herbivore