Hello. I did a test as you mentioned. One ordinary sub vi (all debugging etc turned off), one subroutine sub vi, one call by reference to that subroutine and just the diagram in the main program (debugging turned off in the main program). The sub vi was just adding numbers, and it was run i a loop 100000 times. The results in ms for 100000 calls:
Ordinary sub vi: 45
Subroutine sub vi: 11
call by ref: 125
diagram: 1
Then i complicated the sub vi with sine functions, division etc inside a loop that run 1000 times:
Ordinary sub vi: 1850
Subroutine sub vi: 1820 (30-40 less than ordinary sub vi)
call by ref: 1900-1950 (approx 80 more than ordinary sub vi)
diagram: 1850 (approx the same as ordinary sub vi)
All in all i guess this means that it is only the call itself that is affected by the subroutine option. But, the manual and help files say that sub vi call represent only a small overhead that is practically only for the smallest of sub vis. This cannot be true at all. The overhead even for a subroutine sub vi is huge when looking in terms of flop (floating point operation). These numbers show that a call to these different sub vis represent a certain amount of floating point operations:
Ordinary sub vi: 45 floating point operations (labview add, mult etc primitive)
Subroutine sub vi: 11 flop
call by ref: 125 flop
The numbers are actually larger than this since they also contain the overhead for the loop itself.
I also tried different trig, exp functions etc, and they are very efficient and do not cost considerably more than add, mult etc. Therefore, unless the sub vi contains a loop with some hundred iterations at least, making a diagram that cost less than the call to the sub vi itself is almost practically impossible, it will be too much spaghetti at once. 45 "flops" (in labview primitives) is a HUGE diagram and may contain several advanced math function. Other languages have inline functions because of this, and it is very strange that labview does not have this option considering the enormous overhead for sub vi calls in terms of flops.