My experience are just opposite. DATENAME is slower than CONVERT + DATEPART. See below:
/*------------------------
DECLARE @Bitbucket CHAR(4);
PRINT '========== DATENAME Method of Conversion ==========';
SET STATISTICS TIME ON;
SELECT @Bitbucket = DATENAME(yy,SomeDate)
FROM dbo.JBMTest
SET STATISTICS TIME OFF;
PRINT '========== Original Method of Conversion CONVERT ==========';
SET STATISTICS TIME ON;
SELECT @Bitbucket = CONVERT(CHAR(4), DATEPART(yy,SomeDate))
FROM dbo.JBMTest;
SET STATISTICS TIME OFF;
PRINT '========== Original Method of Conversion CAST ==========';
SET STATISTICS TIME ON;
SELECT @Bitbucket = CAST(DATEPART(yy,SomeDate) AS CHAR(4))
FROM dbo.JBMTest;
SET STATISTICS TIME OFF;
------------------------*/
========== DATENAME Method of Conversion ==========
SQL Server Execution Times:
CPU time = 703 ms, elapsed time = 718 ms.
========== Original Method of Conversion CONVERT ==========
SQL Server Execution Times:
CPU time = 562 ms, elapsed time = 578 ms.
========== Original Method of Conversion CAST ==========
SQL Server Execution Times:
CPU time = 579 ms, elapsed time = 579 ms.