Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

In a test, I could stream a full HD movie across our network from my friends computer no problem.

It's as fast as I could want.

But VNC is painfully slow. We've tried Real VNC and Tight VNC, I've played around with the Capture Method settings but nothing seems to make a difference, it's just so slow.

Does anyone have any tips on using VNC, on how to improve the speed, or perhaps any alternatives?

Is it the nature of not being able to notice invalidated portions of the screen quick enough, or is there a network thing slowing it down perhaps?

We are both using Windows 7.

Thanks!

Edit
I should point out that we need to be able to view and control each other's PCs without locking out the host, so RDP will not work :( unless someone knows otherwise??

share|improve this question
add comment

7 Answers

VNC is just plain inefficient. VNC works pretty much by taking a series of screenshots, compressing them, and slinging them across the network

On Windows, RDP will give you better performance, but you need professional or better on the server/source end for proper RDP I believe.

wierdly remote assistance may work better for your needs -its RDP with both the user at the terminal, and the user at the remote system seeing the same screen

share|improve this answer
2  
Yup, doesn't work on non-Pro versions, although there's a workaround I suppose. (And +1 of course, VNC sucks) –  slhck May 18 '11 at 14:33
    
Ah, I should have stipulated what I did in my edit just now! –  Josh Comley May 18 '11 at 14:36
    
concurrent sessions, can be done with some [hackery] (missingremote.com/guide/… VNC style stuff... remote assistance maybe? . Edited my answer to include remote assistance. –  Journeyman Geek May 18 '11 at 14:42
    
josh Your edit makes sense, but notice the last line of @journeyman post where he says "remote assistance" may work better. Have you looked at Remote Assistance? I use it occasionally and it works great. –  Jay R. Wren Oct 21 '11 at 23:04
    
Edited to reflect that remote assistance really is what you need to use ;) –  Journeyman Geek Oct 21 '11 at 23:49
show 2 more comments

VNC is not comparable to video streaming. In video streaming you typically transfer a pre-compressed video stream via the network. For HD streams it's often H.264 encoded. If you use VNC then your host computer has to take screen snapshots and compress them before sending them on to the network. There are several constraints here:

  • Strong compression needs a lot of CPU power. For example encoding a 90 minutes movie in H.264 in high quality often takes more than 4 hours compression time on my Athlon X2 4450e server. Usually such strong compression is unsuitable for real-time applications like remote control.
  • Less strong compression in turn will require more network bandwidth which might become an issue on low-bandwidth connections like the internet.

Well, there are a couple of "tricks" which are applied by video codecs and remote control and screen-sharing utilities. First of all they try to detect the screen changes and transfer the (compressed) image of the changes only. This usually saves A LOT of bandwith and processing power. However for full-screen video transfer it does not help a lot since the whole screen has to be re-transferred too often. As written above current machines will probably be unable to rel-time encode your screen content in Full-HD and stream it to a remote-control application since your host will have to decode the video content and then re-encode the raw images before sending them to the network. Some older Dual-Core machines are even at the limit when decoding Full-HD video content. Not even speaking about having to re-encode the Full-HD images on screen again before sending them to the VNC client.

To improve your VNC remote-control speed you can do the following:

  • Most VNC servers/clients support multiple compression algorithms. Some of them are optimized for small bandwidth, some for good image quality and some for low latency. This touches another aspect of remote control. Since the service is interactive latency matters (you don't want to see the reaction to a mouse click just after 5 minutes of encoding).
  • Try to reduce the amount of screen changes on your host machine. For example try disabling Windows desktop effects, animations etc. This saves bandwitdth as only changed parts of the screen are transferred over network.
  • Try disabling further visual effects on the host like transparency. Transparent Windows as used by Vista/Win7 reduce the "compressability" of images. Uni-colored/"flat" areas are much more efficient to compress than vibrant colors and fancy details. So disabling Aero transparency and desktop effects really speed up remote control experience. Most remote control tools even allow to disable such effects automatically on connect (e.g. Microsoft RDP and some VNC implementations).
  • Same applies to background pictures. Try using uni-colored background setting instead of HD pictures.

Another issue for VNC is that it has to detect the changes on your screen. Some VNC implementations do "dumb" screenshots and compare them to the previous screenshot to detect changes. This is taking a lot of power already. Some more advanced implementations work with special display drivers (check UltraVNC) which are more efficient here but require special drivers to be installed.

Of course all this does not help if you're playing a video on your host machine. In this case VNC will have to re-encode ~30 full-screen images per second and send it via network. On most compressions which can be performed in real-time by todays CPUs such a stream would take > 8Mbps of bandwidth. So it's unsuitable for most internet connections (especially think about asymmetric DSL connections with typically less than 1Mbps upload speed, and yes, it's upload speed which matters on host side).

It might be suitable for LAN use, but here you should probably more think about setting up a media server or share your media using DLNA/UPnP media server (even Win7 media player can do this). Then use a DLNA client to play the shared media.

share|improve this answer
1  
+1, nice explanation. I'd also go for the DLNA/Media Server version. –  slhck May 18 '11 at 15:02
add comment

If you're trying to watch video across a LAN, the fastest solution in terms of sheer screen-drawing speed is probably Radmin.

share|improve this answer
2  
Tried Radmin and, yes it's commercial, but it's bloody worth it! Very fast. Fantastic. –  Josh Comley May 18 '11 at 21:47
add comment

The absolute fastest VNC variant I've ever used is UltraVNC with the Video Mirror Driver installed. RDP is still noticeably faster, but it's not nearly as bad.

I've also heard really good things about ZeroRemote, but never tested it. It appears that TrueRemote is its successor.

share|improve this answer
add comment

You may also try TeamViewer, it's free for non-commercial use and was fairly fast for me. I've not tested it on HD video though.

share|improve this answer
add comment

If you are looking for performance you need to not use VNC, Try something like LogMeIn. It's free and works well.

share|improve this answer
    
Just tried LogMeIn, didn't like it at all! –  Josh Comley May 18 '11 at 14:46
2  
I love LogMeIn for remote control, but for video? Not a chance. VNC is at least P2P. It goes directly between the source and destination. LogMeIn introduces a connection through their server, which means you've got much higher latency. All the problems with VNC plus a few more. It's powerful at what it is designed for, but it's not designed for real-time full-screen video. –  music2myear May 18 '11 at 15:45
    
I'm not trying to do video, I only used video as a test to ensure the connection between the two computers wasn't slow –  Josh Comley May 18 '11 at 16:36
add comment

As @Journeyman Geek says, VNC is inefficient. This is by design so that VNC doesn't have to "understand" what the remote client is trying to display.

RDP actually does, so it can take shortcuts and render images faster. RDP tells the other end, for example, "client opened a window at this location" instead of sending the bitmap data representing the screen change.

There are "terminal server" hacks out there that will add RDP capability to the versions of Windows that don't feature them, but I don't officially recommend them and you use these at your own risk. However, I think even the "Starter" versions of Windows 7 come with "Remote Assistance" (msra.exe) which you might try using.

Things you can do to improve VNC performance, however, include lowering the display depth to 8 bits, lowering the resolution of the client screen, and using client-side bitmap caching. That means VNC has to ship less data on the wire and you'll experience better performance (but it won't look pretty).

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.