A few efficient methods were shown in this post and copied below but that doesn't work for temporary tables. I really want to avoiding COUNT(*) due to the table size.
The first one below returns and error and the second NULL
SELECT CONVERT(bigint, rows)
FROM sysindexes
WHERE id = OBJECT_ID(#temporaryTable)
AND indid < 2
SELECT SUM (row_count)
FROM sys.dm_db_partition_stats
WHERE object_id=OBJECT_ID(#temporaryTable)
AND (index_id=0 or index_id=1);