Currently, we perform post-commit processing for every commitable item individually. That means that if you commit a large number of items in the same directory, then for each item, we create a log file for that item, update the BASE files, remove the log file, and rewrite the whole of entries. The entries writing alone is O(N^2), and can take up an appreciable amount of time with a large number of items. To improve this, libsvn_wc needs a version of svn_wc_process_committed4() that can accept an array of files (within the same wc directory) and svn_client_commit4() needs to learn to batch up items for it, rather than calling it once for each committable. Alternatively, we could have some way to defer the actual log-running/entries-writing part of the wc update until we've written out all the log entries, then do that once for each directory.
Original issue reported by malcolm