Is there a general performance difference in SQL Server 2012 passing in a table valued parameter versus just passing in a fixed set of individual scalar-valued parameters into a stored procedure?

Also, does passing in the same individual set of scalar-valued parameters reduce recompilation of your stored procedure versus passing in a table parameter that might have different number of row values within?

I am working on trying to reduce recompilation of some of my lengthiest stored procedures (3000+ lines which unfortunately I cannot share) and I notice that many of them have a tabled value parameter being passed as well as other potential "issues" that can be improved upon including including creation of multiple temp tables, indexes being created for those temp tables within the stored procedure, missing indexes on the main tables, and conditional logic which may or may not run a part of the stored procedure.

Thank you for your time.

EDIT: Clarified fixed set of scalar-valued based on comments.