Did You make any test which would measure the whole operation performance (CPU and memopry usage, IO reads and execution time):
I. preparing XML in an external application
II. executing a procedure with this XML as parameter
I. preparing (populating with data) a DataTable on the application side
II. executing a procedure with this table as parameter (which also includes sending the whole data table through the network connection to the server and inserting rows to the table on the server side [II-B])
Time and resources used in the step II-B may be significant.
With best regards