Q: Will I see a performance effect if I enable the Hyper-V Processor Compatibility feature?
A: When a virtual machine starts, it typically queries the processor and will see all the instruction sets available. The virtual machine can then use these instruction sets and make them available to applications running on the operating system. If you want to live migrate a virtual machine between Hyper-V servers, those servers must support the same instruction sets. The virtual machine won't reboot as part of the live migration and therefore won't see any changes in available instruction sets. If a virtual machine is live migrated to a host that's missing an instruction set that was previously available, you'll run into problems when the operating system tries to use the instruction set. Therefore, you can't live migrate a virtual machine between different versions of a processor.
If you do want to be able to live migrate between different versions of a processor within the same family (note that you can't live migrate from Intel to AMD), you can enable the Processor Compatibility mode. You configure this setting from the Compatibility tab of the Processor resource in the virtual machine settings. After you enable this setting, several of the processor's instruction sets are hidden from the virtual machine. Because all the instruction set differences are now hidden from the virtual machine, you can then move a virtual machines between different versions of a processor within the same processor family. However, this is where the question of performance comes into play.
The instruction sets supported by processors generally offer some kind of performance improvement because they optimize certain types of operations, which applications can then use to improve performance. When you enable the Processor Compatibility mode, you hide these instruction sets. The applications therefore can't use the instructions sets, which then logically affects the application and virtual machine's processor performance. However, this is only the case if the application would have used those instruction sets if available—which varies greatly by application. If the application wouldn't have used the hidden instruction sets, you won't see a performance difference. But if the application would have used the instruction sets, then you'll likely see a drop in performance.
You should check with the application vendor to determine whether a particular application is optimized for certain instruction sets. Then, you'll need to consider wether the performance effect is too great. In most cases, the need for mobility of virtual machines will outweigh the performance effect. And of course, you should always purchase the same brand of servers and processors whenever possible.