Единственный способ узнать наверняка - это профиль в вашем контексте . Чтобы установить ожидание, dynamic
довольно умен, и кеширует (для каждого шаблона) фактический путь к коду. Таким образом, он намного быстрее, чем необработанное отражение, однако интерфейс должен быть немного быстрее и иметь преимущество статической проверки.
Лично я бы написал код для интерфейса библиотеки dll, на который могут ссылаться как текущий код, так и SampleLib, т.е.
IMyInterface foo = (IMyInterface)someAssembly.CreateInstance(
"SampleLib.SampleClass");
...
foo.DoSomething("Hello");