emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Slow image display over network


From: joakim
Subject: Re: Slow image display over network
Date: Fri, 24 Sep 2010 09:44:35 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (gnu/linux)

I think most has been said in the other replies, but heres some random
other thoughts(sorry for top-posting):

- Try a compressed X implementation such as NX, and see how that
  compares. (My guess is that the initial image transfer will be a bit
  faster since NX can transfer pixmaps in compressed formats)

- One of the TODO:s for the ImageMagick branch is to try to optimize
  display of images with low color-depth. I think several of the image
  loaders just allocates full RGB pixmaps even though a binary pixmap
  would be sufficient for a BW image for example. This optimization
  wouldnt help actual RGB images though.

- It would be interesting to try out to optimize SVG support, for
  instance, by implementing it as vector drawing calls on the X display
  rather than, as now, drawing the SVG into a pixmap that then gets
  transmitted through the wire and cached in the X server. That seems
  like a lot of work though.
  

Have fun playing around in the image code!

/Joakim

Lars Magne Ingebrigtsen <address@hidden> writes:

> One thing I've wondered about for a while, but has become more relevant
> lately (what with the web feeds in Gnus and stuff) is why image display
> is so slow over remote connections.
>
> Here's how to reproduce:
>
> 1) ssh somewhere that's far away, so that there's plenty of latency
> 2) open an Emacs over X
> 3) (put-image "/tmp/pretty-big-picture.jpg" (point))
>
> Depending on how big the picture is, and what the latency is, this might
> take very long time.
>
> 4) switch to a different buffer
>
> This will be instantaneous.
>
> 5) switch back to the buffer where the picture is
>
> This will not be instantaneous, but it will be very fast.
>
> So that's the behaviour I don't understand.  The first time you display
> an image (over a high-latency X connection), it's really slow.  The next
> time you display the same picture, it's really fast.
>
> Emacs caches pictures internally, but that doesn't really explain the
> incredible slowness the first time the picture is displayed remotely.
> Or does it?
>
> To me it seems like there might be a lot of ping-pong network chatter
> when Emacs is instantiating pictures the first time.
>
> In fact, just calling this takes several seconds remotely:
>
> (image-size (create-image "/tmp/sleeve.jpg") t)
>
> But only the first time.  
>
> Hm.  Actually, `put-image' after the first `image-size' is
> instantaneous.  Which sort of confirms my suspicions -- it's not the
> remote image display per se that is latency-sensitive, but something
> Emacs does while instantiating it.
>
> Does anybody know what's causing this?  Or where I should poke around?

-- 
Joakim Verona



reply via email to

[Prev in Thread] Current Thread [Next in Thread]