Frage

Ich schicke Objekt-IDs hin und her vom Client zum Server durch den GWT RPC-Mechanismus. Die IDs kommt aus dem Datenspeicher als Nachläufer (8 Bytes). Ich denke, alle meine IDs nur 4 Bytes benötigt, sondern etwas zufällig könnte vorkommt, dass gibt mir einen 5-Byte (oder was auch immer) Wert.

Ist GWT geht über Verpackung, diese Werte in irgendeiner Codierung mit variabler Länge, intelligent zu sein, den Platz im Durchschnitt sparen? Kann ich, dass es so irgendwo tun angeben? Oder sollte ich schreibe meine eigenen Code, um die Longs zu ints kopieren und achten Sie auf die Ausnahmesituationen?

Dank ~

War es hilfreich?

Lösung

Wie bereits erwähnt in der GWT Dokumentation .

  

lang : JavaScript keinen 64-Bit-Integral-Typen hat, muss so lange besondere Berücksichtigung. Vor dem GWT 1.5 wurde der lange Typ wurde einfach auf den Integralbereich eines Gleitkommawert 64-Bit JavaScript abgebildet, lange Variablen eine tatsächliche Reichweite weniger als die vollen 64 Bits geben. Ab 1,5 GWT, ist als ein Paar von 32-Bit-Zahlen, und arbeitet zuverlässig über den gesamten 64-Bit-Bereich lange Primitiven emuliert. Überlauf emuliert das erwartete Verhalten anzupassen. Es gibt ein paar Einschränkungen. Schwere Verwendung von langen Operationen eine Auswirkung auf die Leistung aufgrund der zugrunde liegenden Emulation haben. Darüber hinaus können lange Primitiven nicht in JSNI Code verwendet werden, da sie numerischen Typ kein nativer JavaScript sind.

Wenn Sie Ihre IDs in einem Integer passen, könnte man besser mit, dass ab. Andernfalls, wenn Sie ein DTO verwenden, stellen Sie die IDs eine doppelte, die in Javascript tatsächlich vorhanden ist.

Andere Tipps

verwendet GWT gzip-Kompression für Reaktionen mit einer Nutzlast von 256 Byte oder mehr. Das sollte gut funktionieren, wenn Sie eine Menge von Null-Bytes in Ihrer Antwort haben.

Von RemoteServiceServlet.shouldCompressResponse :

  

Legt fest, ob die Antwort auf eine   gegeben Servlet-Anforderung sollte oder   nicht GZIP komprimiert werden. Diese Methode ist   nur in den Fällen genannt, wo die   Anforderers akzeptiert GZIP Codierung.

     

Diese Implementierung derzeit Renditen   wenn die Antwort Zeichenfolge stimmt   geschätzte Byte Länge ist länger als   256 Bytes. Subklassen kann außer Kraft setzen   diese Logik.

So werden die Server zuerst überprüft, ob der Antragsteller (der Browser, in der Regel) akzeptiert GZIP-Kodierung. Intern java.util.zip.GZIPOutputStream ist gebraucht - siehe RPCServerUtils . Auf der Client-Seite, dann ist es die Aufgabe des Browser dekomprimieren der gzip-Nutzlast - da dies in nativen Code ausgeführt wird , sollte es ziemlich schnell sein.

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