There is a large gap between the theoretical maximum value of tx per second vs. what is actually feasible.
Edit. Note that these calculations are arbitrary, as the comment from Murch pointed out the smallest possible tx without a real purpose could be even smaller. These transactions will not transfer any BTC over the network, but for the sake of theoretical maximum speeds they can be calculated.
The theoretical minimum-sized transaction is an OP_CHECKSIG transaction with the minimum size of 166 bytes for the whole tx. The tx looks like this (the total size of 166 bytes is the two scripts + reference to previous tx + headers):
scriptPubKey: <33 byte compressed pubKey> OP_CHECKSIG scriptSig: <72 byte signature>
Given a 1 MB block, we get 1,000,000 bytes / 166 bytes
per block which is about 6024 tx per block. On an average, a block is mined every ten minutes. This means 6024/(60*10)
or around 10 tx per second. A conservative estimate of a transaction having two inputs and two outputs equates to a rough tx size of 320 bytes which will halve our estimation to 5 tx per second.
Edit. Fix segwit calculations, as pointed out by Murch in the comments
For a 100 % segwit block there is a great calculation in this answer by cdeker. Basically a full segwit block could hold up to 12195 transactions per block (calculated by having the non-segwit part as a limiting factor, which is 82 bytes in the optimal case). This will result in about 20,3 tx/s.
You can calculate the theoretical maximum speed by dividing your tx count in a block by 600 seconds. How many tx will fit into a block can be calculated in many different ways but the theoretical possibilities are far from actual usage. For the current situation in real world, you can see that the avg number of tx in a block hovers around 3000 tx per block.