Frage

Ich sehe oft Pprogramme wie Dies, wo Int64 ist ein absoluter Performance-Killer auf 32-Bit-Plattformen. Meine Frage ist jetzt:

Wenn ich eine bestimmte Wortlänge für meine Aufgabe benötige (in meinem Fall A RNG), ist, ist Int64 Effizient auf 64-Bit-Plattformen oder wird es die C-Calls noch verwenden? Und wie effizient ist es, eine zu konvertieren Int64 zu einem Int?

War es hilfreich?

Lösung

Auf einem 64 -Bit -System int64 sollte Sei gut, ich weiß es aber nicht genau.

Noch wichtiger ist, wenn Sie Krypto- oder Zufallsnummer-Generation durchführen MUSS Verwenden Sie den Datentyp, von dem der Algorithmus verwendet wird, und achten Sie auch auf die Unterzeichnung. Wenn Sie dies nicht tun, haben Sie die falschen Ergebnisse, was bedeuten könnte, dass Ihre Kryptographie nicht sicher ist oder Ihr Zufallszahlengenerator nicht wirklich zufällig ist (RNGs sind schwierig und viele sehen zufällig aus, aber nicht).

Verwenden Sie für jede andere Art von Arbeit, wo immer Sie können, oder machen Sie Ihr Programm mithilfe der integralen Typklasse Ihr Programm polymorph. Wenn Sie dann der Meinung sind, dass Ihr Programm langsamer ist, als es profilieren sollte, um festzustellen, wo Sie sich konzentrieren sollten, wenn Sie versuchen, es zu beschleunigen. Wenn Sie die integrale Typklasse verwenden, ist es einfach, von Ganzzahl zu int zu wechseln. Haskell sollte klug genug sein, um (den meisten) Code spezialisiert zu sein, der Polymorphismus verwendet, um Gemeinkosten zu vermeiden.

Andere Tipps

Interessanter Artikel über 64 -Bit -Performance hier:

Wird mein Code nicht schneller auf 64-Bit sein ???

Wie der Artikel besagt, ist der große Engpass nicht der Prozessor, sondern der Cache- und Speicher -I/O.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top