If your view contains data from several tables & you have to use that view in several queries, then It is always better to create views.
Views does not have any data. It is only a virtual table.
One more thing, don't use any where clause in views until it is necessary.
You can create indexed views. (personally I never prefer temp tables).
As "matak" said, if you can provide execution plan, then it is very useful to identify the exact problem.