Is there a difference in terms of code performance?
I'm not clear what that means. If you want to know whether it changes runtime performance, then no. If you mean something else, please define what you mean.
Which one is preferred?
It depends. If you need to refer to symbols from the imported unit in the importing units interface section, the unit must be imported into the interface section. If you only refer to imported symbols in the implementation section you can do it either way.
If Unit1
uses Unit2
, and Unit2
uses Unit1
, then they cannot both do so by importing into the interface sections. That leads to a circular reference error. One way to escape that is to move one of the imports to the implementation section.