This is very tricky, as you can't measure managed objects size in memory.
You can serialize to a memoryStream, but this won't be acurate at all.
You can use Marshal.SizeOf to return the unmanaged size of an object in bytes.
A work wround is to run your application in both cases, each time loading a colletion of 1000 objects, and check the Windiows Task Manager for memory allocated to the running process of your application.
This way you can spot the differences.