В ComService.lib порты открываются приблизительно так:

Delay := Delay + 1;
IF (Delay MOD 100) = 0 THEN
IF Task = OPEN_TSK THEN
/* открываем
END_IF
IF Task = RESET_TSK THEN
/* настраиваем
END_IF
IF Task = CLOSE_TSK THEN
/* закрываем
END_IF
END_IF

Поэтому порт открывается несколько сот циклов. Два (при условии, что открываются по очереди) это где то 400 циклов (но они могут сначала и закрываться итого 600). И еще, раз в библиотеке написано именно так, то несколько портов все таки стоит открывать по очереди, а не два одновременно (вполне возможно что два сразу будут открывацо дольше).