Number of instructions is probably not a good metric. Without any loops/jumps you might have a lot of instructions, but a very low complexity.
An endless loop executes a lot of instructions, but does not have to be complex.
I recall implementing some linear algebra numerical code. The problem was a bit complex, resulting in a bit of code complexity.
However I realized I had some extra information I hadn't used, and I spent half a day going over the math again. After a couple of pages of derivations I could narrow down the result to a couple of dot products.
So, I ended up with a commit where I had 100 or so lines of comments including equations to justify my two lines of code.
The implementation became super-simple, but why it worked was suddenly not so simple. I had effectively moved complexity from code-space to problem-space.
By that definition a loop doing 1 billion times a simple calculation would count as very complex, even though it is very easy to understand.
LOC would be better, even though code can be dense and complivated, or very verbose and simple.
Complexity is a measure of human difficulty in comprehension, not mechanical difficulty in execution...