duration of signal

From Arduino Playground - HomePage

If you look at the source code in lib/targets/arduino/wiring.c, you will see that digitalRead() and digitalWrite() are each about a dozen or so lines of code, which get compiled into quite a few machine instructions. Each machine instruction requires one clock cycle at 16MHz, which can add up in time-sensitive applications. Direct port access can do the same job in a lot fewer clock cycles.

I suggest you take a look at the article for more information on the subject. But basically you will need to use the port registers if you want to achieve 1 instruction per cycle.