[Top][All Lists]
[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
Re: Slow image display over network,
joakim <=