In order to test the throughput of a private Ethereum, I need to send multiple transactions as fast as possible. Can web3js ensures fast delivery of transactions? or there is an other more efficient way?
The web3js is just a "gateway" or a framework to make it easier to interact with a node. It doesn't have much logic in itself so most likely that won't be your bottleneck.
The next part depends on what your intentions are. As I read your question it would appear that you only want to push the transactions into the blockchain and you don't care about whether they get mined or not. But based on your comments I guess your measurements require that the transactions would get mined as well.
So if the transactions should get mined as well your bottleneck will most likely be the blockchain itself. And that really depends on your network setup. As it's a private network, it may work fast but most likely it won't work fast enough. I'm not sure how far you can push the gas limits of a block for example - maybe in theory you can increase the limit enough so that you'd get 15k transactions in a single block but I'm unsure about this. Or, well, I doubt there are any strict restrictions in that sense and you just might get away with it.
Even if you get all your transactions in a single block and someone completes the block (how long that requires depends on your network/nodes) it will only give you certain kinds of measurements. Your network will be very dissimilar to the public Ethereum network. But maybe that's ok for you.
Anyway, long story short, if it's enough for you that the transactions are broadcasted to the network and you don't care about when they are mined then your bottleneck is most likely the node(s) you use for broadcasting. But if you want the transactions to be also mined fast you have to modify the network heavily and make sure the nodes handling the transactions can take in that many transactions.