The pulse in function is long because it is not detecting anything but has to wait until it times out. You can look into changing the time out time for a faster response.
I suppose your idea is to have what ever is producing your pulse also generate an interrupt that captures the current time on the mills, or micros counter.
For this you need to use the pin change interrupt function set for an edge.
Can you provide more information about what is generating these edges and if you need the full cycle time or just the duration of a pulse high or pulse low period.
Also by not posting all your code we have no idea what B0 and B1 are. That logic at the end looks a bit odd with the sens array sometimes not getting any reading. Is it initialised only once or cleared in each 18 reading measurement cycle.
This is posted in the wrong section, it has nothing to do with the section definition.