Поместите различные реализации функций, связанных с сетью, в разные файлы .c, имеющие общий заголовок и ссылку на тот, который вы хотите использовать. Начиная с этого, вы можете сделать так, чтобы ваш make-файл создавал x разных исполняемых файлов таким образом для каждой из реализованных вами разных реализаций, так что вы можете просто сказать «make httpd_select» или «make httpd_poll» и т. Д.
Специально для бенчмаркинга, чтобы найти лучший подход, он, вероятно, даст вам более надежные результаты для выполнения на уровне компилятора / компоновщика, чем через разделяемые библиотеки или указатели функций, поскольку это может привести к дополнительным издержкам во время выполнения.