When compared to a 'real' server does a cloud-hosted virtual server of a similar specification (available RAM, processer, disk etc) have a noticable performance cost?
We just use the EC2 cloud to host our corporate infrastructure, which doesn't have any critical performance requirements, but I've never noticed any slowness with EC2 servers compared to our old physical hosted servers; I think that Amazon for one are fairly honest with their server specs.
One cool thing about the Amazon cloud is that they have really good bandwidth, which you get for free rather than having to pay your hosting provider for the Mbps. I've seen much faster down / upload speeds to and from EC2 than we used to get with Rackspace.
Yes, there is almost always going to be a performance trade off between running code on 'bare-metal' and any form of virtualisation. That said the servers used in a cloud may be more powerful than the server you might choose to host your app yourself, so the overhead may be negated by this more powerful hardware. My advice would be to run many, many tests on any given cloud you're considering, including the same tests at different times of the day and month.
You have to take into consideration the benefits outside of a straight spec comparison, and pure performance comparison to determine whether cloud hosting is right for you or not.
In terms of pure performance and specifications, the dedicated server option will give you full disk throughput, cpu time, and you don't have to worry about the layer of virtualization as well as other virtual servers accessing the same hardware resources. It usually won't be noticeable unless you have two high resource intensive applications running on the same hardware.
However, the virtual server hosted in the cloud gives many more additional benefits than a dedicated server. Usually you get additional benefits such as easy scaling, load balancing, instant workload migration, and failover server migration. These are just a few of the features that a virtualization layer benefits hosting.
Most cloud-hosting providers also can offer more efficient server specs for your needs, and you can easily scale up the performance quickly and easily.
If you like full control of your system from software all the way down to the baremetal, then you would probably just get a dedicated server, usually with a 2nd less powerful server as a backup in case the first one fails, to give you time to fix and repurpose the master server.
There is more to think about, but this hopefully gives you a brief look into what questions you should be asking yourself.
Do you have any specific I/O requirements, i.e. does your application put a significant load on your database, even if only sporadically? If you're doing the equivalent of running SQL*Loader (a bulk loading utility for Oracle) and doing a big write to a DB hosted on a cloud (or any virtual machine) you will likely see a hit on write performance. The performance hit will vary greatly based on the underlying storage architecture. If you you have very specific I/O requirements, you probably don't want to go solely based on their cloud/VM specs as virtual disk performance can vary a great deal.
As others have mentioned, there may be performance issues arising from the use of virtualised hardware. However, the other area in which you may notice a difference is network latency. As these "cloud" servers aren't hosted on-site, you'll likely notice a considerable difference in latency between a cloud service and an onsite or locally hosted service. e.g. I live in Adelaide, and for a SSH session there's no noticeable difference between my home server and a server hosted in an Adelaide data center. However, the latency difference between a server hosted in Adelaide and one hosted in the US is quite noticeable.
In a nutshell, if your cloud provider gives you a choice of locations, pick the one closest (in network terms) to you and your users.
My 2c worth is that if you're just using 'Cloud computing' as VPS's then your missing out on the real benefit.
See answer here Should our web-app go Cloud or multiple VPS?