You would probably find SPI faster than I2C. I have done some writeups on them here:
I can only get the I2C data transfer to work if I use the Wire.onReceive() command and It seems to be interrupt based ...
That's pretty normal because how else does the receiving end know when the data is going to arrive?