1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Speicher auf 0 setzen

    • Frage
  • Swoncen
  • 12. April 2006 um 12:40
  • Unerledigt
  • Swoncen
    22
    Swoncen
    Mitglied
    Reaktionen
    1
    Punkte
    5.331
    Beiträge
    993
    • 12. April 2006 um 12:40
    • #1

    Hallo!

    Ich hab eine Stelle in meinem Algorithmus den ich extrem beschleunigen kann indem ich einen großen Bereich im Speicher auf 0 setz. Ich möchte 640*480 Byte auf 0 setzen und ZeroMemory ist viel zu langsam. Kennt wer eine schnellere Möglichkeit?

    640K ought to be enough for anybody. :eek2:

  • hal
    32
    hal
    Mitglied
    Reaktionen
    52
    Punkte
    11.122
    Beiträge
    2.208
    • 12. April 2006 um 12:55
    • #2

    Hängt von der Plattform ab. Auf PowerPC isses schneller, wenn man das über die Vektoreinheit (AltiVec) macht, weil man dort immer 128 Bits auf einmal bearbeiten kann.
    Generell sollten aber diese Bibliotheksfunktionen bereits so gut optimiert sein wie irgendwie möglich, weil dadurch ja jedes Programm automatisch schneller wird.

    [font=verdana,sans-serif]"An über-programmer is likely to be someone who stares quietly into space and then says 'Hmm. I think I've seen something like this before.'" -- John D. Cock[/font]

    opentu.net - freier, unzensierter Informationsaustausch via IRC-Channel!
    Hilfe und Support in Studienangelegenheiten, gemütliches Beisammensein, von und mit Leuten aus dem Informatik-Forum!

  • Swoncen
    22
    Swoncen
    Mitglied
    Reaktionen
    1
    Punkte
    5.331
    Beiträge
    993
    • 12. April 2006 um 13:01
    • #3

    Es wäre cool, wenn man den ganzen Block irgendwie in einem auf 0 setzen kann. Vielleicht ist sowas in asm möglich. Die nächste Idee wär da natürlich SIMD.

    Es ist unter Windows in C++

    640K ought to be enough for anybody. :eek2:

  • kubuntu
    6
    kubuntu
    Mitglied
    Reaktionen
    2
    Punkte
    352
    Beiträge
    65
    • 12. April 2006 um 14:02
    • #4

    Wenn du VC++ verwendest und du SSE Optimierung in den Projektoptionen eingeschaltet hast, ist die memset() SSE optimiert.
    Bei mingw32/gcc gibts dafuer das Flag -msse(1/2/3)


  • Swoncen
    22
    Swoncen
    Mitglied
    Reaktionen
    1
    Punkte
    5.331
    Beiträge
    993
    • 12. April 2006 um 14:30
    • #5

    Uh danke.. werds dann mal probieren.

    640K ought to be enough for anybody. :eek2:

  • Swoncen
    22
    Swoncen
    Mitglied
    Reaktionen
    1
    Punkte
    5.331
    Beiträge
    993
    • 13. April 2006 um 13:48
    • #6

    Hallo nochmal.

    Ich find diese Einstellungen nicht. Ich verwende Visual Studio.NET 2005 und ich hab nur herausgefunden, wie man SSE2 aktiviert.. "_set_SSE2_enable(1)", aber da ändert sich nichts.

    640K ought to be enough for anybody. :eek2:

  • kubuntu
    6
    kubuntu
    Mitglied
    Reaktionen
    2
    Punkte
    352
    Beiträge
    65
    • 13. April 2006 um 14:14
    • #7

    SSE Optimization kannst du unter Projektoptionen -> Code Generation -> Enable Enhanced Instruction Set freischalten.

    Was meinst du da aendert sich nichts? Wenn ich mir das im Debugger anschaue called er bei mir die memset Funktion, und in der prueft und springt er dann weiter zu einer SSE optimierten Funktion, die die Arbeit macht.

    Wenn du lieber gleich die SSE optimierte Funktion habe moechtest -> selbst schreiben. VC++ hat ja eh diese intrinsic Funktionen. InlineAsm is nicht zu empfehlen, da es unter VC++ ab 64bit keinen inline assembler mehr gibt.

    btw. wenn du dir das Doom3 od. Quake4 SDK runterlaedst, da is eine memset() optimierte Funktion dabei. Aber nur mit Hilfe von MMX.


  • Swoncen
    22
    Swoncen
    Mitglied
    Reaktionen
    1
    Punkte
    5.331
    Beiträge
    993
    • 13. April 2006 um 15:00
    • #8

    Naja ich hab die Zeit gemessen und es war ziemlich gleich, wobei da aber ein gewaltiger Unterschied sein müsste. Naja wie gesagt ich hab die SSE2 enabled und nicht die SSE. memset dürfte anscheinend nur auf SSE optimiert sein. Ja die intrinsics hab ich mir schon angesehen, ich werds wahrscheinlich auch mit SSE2 probieren, da hab ich ja 16*8-Bit auf einmal..

    Danke

    640K ought to be enough for anybody. :eek2:

  • Swoncen
    22
    Swoncen
    Mitglied
    Reaktionen
    1
    Punkte
    5.331
    Beiträge
    993
    • 15. April 2006 um 13:34
    • #9

    Es funktioniert einfach nicht.. ich habs aktiviert und dann kam der Fehler, dass diese Option mit /clr: Oldsyntax nicht kompatibel ist. Ich hab dann die Common Language Runtime ausgeschalten, aber so gehts auch nicht. Schade jetzt muss ichs mir selber programmieren..

    640K ought to be enough for anybody. :eek2:

  • Maximilian Rupp 27. Dezember 2024 um 12:06

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Benutzer online in diesem Thema

  • 1 Besucher

Rechtliches

Impressum

Datenschutzerklärung