Вариант 1 хорош, если у вас много неуправляемого кода, который вы не успеваете перенести.Если вы идете по этому пути, убедитесь, что вы выполняете как можно меньше вызовов к неуправляемым методам, даже если эти вызовы связаны с отправкой больших аргументов / результатов, поскольку маршалинг между управляемым / неуправляемым миром может нанести ущерб производительности.
Вариант 2 - это хорошо, вы в конечном итоге конвертировать все в управляемый код.Предполагая, что этот код написан правильно, он может работать по крайней мере так же быстро, как неуправляемый код.