To Me, the most important way to compare two different implementations is : "Does it meet my design goal"
If I need a design that needs to perform Fn with a throughput of XGB/s, then as long as it meets those goals, I dont really care how it does it. If I have a choice of two, I will then look at secondary considerations, mainly how portable it is. Is the code well written, easy to modify and port to a new design. If the really "good" design is inflexable and not very portable, and poorly documented, that may mean I use a 2nd option as it may be easier to modify an fix later.
Simply comparing two designs based on area or speed is not that important to me. The most important is whether the code is well written, well commented, well documented and does it meet the design specifications.