quiz – why does entity_delete_multiple use a cursor, not a set?

I get a lot of visits on the quiz module on my site, several thousand per month.
And I find in the comments of the users that I must remove the old tests (they are all under an anonymous identifier) ​​so that the performance of the questionnaire remain acceptable.

Deleting many thousands of test results can be very tedious because you can not delete them all, something overflowed and an error, so I have to delete several hundred at a time. (Although now I have moved a hosting company that has improved a lot)

It seemed to me that the delete function was deleting the data one by one. When I checked the code, it called "entity_delete_multiple" which, apparently, passed to a result set, but instead of deleting it, it opens a cursor and deletes them one by one. It seems so counterintuitive that there must be a good reason?

foreach ($ ids as $ id) {
$ info['deletion callback']($ id);

Is there any place in the entire API where a set of identifiers can be passed and the equivalent of 'delete the name of the table where the l? identifier is defined "?