This is completely a case of It Depends.... It depends on how you are using them. Stored procedures are compiled and the execution plan is stored in the plan cache. Views have a Parse Tree that exists in the cache, but not an execution plan. The reason that views don't have an execution plan is that depending on the usage of the view the plan requirements may change. The optimizer will perform rewrites of the view logic and eliminate unneeded operations based on the query that makes use of the view. You can see this by running the following statements in the AdventureWorks sample database:
select * from HumanResources.vEmployee select EmployeeID from HumanResources.vEmployee select FirstName, LastName from HumanResources.vEmployee where EmployeeID = 10
All three statements use the same view, but they each have a distinct execution plan for using the view, based on the requirements of the query that was submitted. Views are for convenience only, they have no performance benefits at all, unless they are indexed views and expansion does not occur for the statement executing. Consultants love to find databases that have lots of views in them because they generate lots of billable hours, performance tuning code, and eliminating redundancy by doing manual expansion of the views to eliminate redundant joins between multi-view operations.