Das X11-Protokoll war nie für grafische (in Bezug auf Bitmaps / Texturen) intensive Operationen gedacht. Damals, als X11 zum ersten Mal entwickelt wurde, war die Computergrafik viel einfacher als heute.
Grundsätzlich sendet X11 den Bildschirm nicht an Ihren Computer, sendet jedoch die Anzeigeanweisungen, damit der X-Server auf Ihrem lokalen Computer den Bildschirm auf Ihrem lokalen System neu erstellen kann. Dies muss bei jeder Änderung / Aktualisierung der Anzeige erfolgen.
Ihr Computer empfängt also einen Strom von Anweisungen wie "Zeichnen einer Linie in dieser Farbe von den Koordinaten x, y bis (xx, yy), Zeichnen des Rechtecks W Pixel breit, H Pixel hoch mit der oberen linken Ecke bei (x, y) usw." "
Der lokale Client ist sich nicht wirklich bewusst, was aktualisiert werden muss, und das ferne System enthält nur sehr wenige Informationen darüber, was der Client tatsächlich benötigt. Daher muss der Server im Wesentlichen eine Menge redundanter Informationen senden, die der Client möglicherweise benötigt oder nicht.
Dies ist sehr effizient, wenn die darzustellende Anzeige aus einer begrenzten Anzahl einfacher grafischer Formen besteht und nur eine niedrige Aktualisierungsfrequenz (keine Animationen usw.) erforderlich ist. Das war zu der Zeit, als X11 erstmals entwickelt wurde.
Moderne GUIs haben jedoch eine Menge Augenschmaus und viele davon müssen vom Remote-System in Form von Bitmaps / Texturen / Schriftarten an Ihren Client gesendet werden, die viel Bandbreite erfordern. Zu allen Arten von Augenweiden gehören animierte Effekte, die häufig aktualisiert werden müssen. Und die Anzeigen werden auch immer größer, doppelt so breit / hoch ist 4x die Anzahl der Pixel.
Im Laufe der Zeit wurden natürlich Verbesserungen des X11-Protokolls vorgenommen, um dies so weit wie möglich zu optimieren, aber das grundlegende zugrunde liegende Design ist im Wesentlichen einfach nicht gut für die Anforderungen, die heutige GUI-Leute erwarten.
Andere Protokolle (wie RDP und VNC) sind eher dafür ausgelegt, dass das Remote-System alle harte Arbeit erledigt und dieses System entscheiden lässt, welche Updates (als komprimierte Bitmaps) so effizient wie möglich an den Client gesendet werden sollen. Dies stellt sich oft als effizienter für moderne GUI heraus.
Keine Methode ist perfekt und kann mit jeder Situation gleich gut umgehen. Es gibt kein einzelnes Anzeigeprotokoll, das unter jedem denkbaren Anwendungsfall gut funktioniert.
In den meisten Fällen probieren Sie einfach alle Protokolle aus, die zwischen Ihrem lokalen Client und dem Remote-Server unterstützt werden, und verwenden Sie das Protokoll, das die besten Ergebnisse liefert. Und in einigen Fällen gibt es keine Wahl und Sie müssen sich nur mit dem, was verfügbar ist, begnügen.
Die meisten Protokolle erlauben eine gewisse Leistungsoptimierung, aber viele dieser Einstellungen sind nur serverseitig und nicht für den durchschnittlichen Benutzer verfügbar. (Und sie richtig zu konfigurieren, ist ein bisschen eine geheimnisvolle Kunst. Viele Sys-Admins werden sich nicht damit abfinden.)
In den meisten Fällen ist der einfachste Weg, die Leistung zu verbessern (manchmal sehr dramatisch), die Umstellung auf eine einfachere Desktop-Umgebung mit weniger Augenmerk auf den Einsatz von Hintergrundbildern.