I'm not sure what would be causing a delay at startup and shutdown - there shouldn't be that much overhead caused by using one function with two nested loops. Just in case it's some bounds-checking business, have you tried it with "Debug Build" turned off?
Both approaches run at the same speed for me (and having debug on/off makes no difference). They each take about 1667 milliseconds on my PC:
Strict
Graphics 800,600
Local bline_y
Local start = MilliSecs()
For Local c = 1 To 100
Cls
bline_y = 20
DrawText "0",35,bline_y
DrawText "0",65,bline_y
DrawText "0",95,bline_y
DrawText "0",125,bline_y
DrawText "0",155,bline_y
DrawText "0",185,bline_y
DrawText "0",215,bline_y
DrawText "0",245,bline_y
DrawText "0",275,bline_y
DrawText "0",305,bline_y
DrawText "0",335,bline_y
DrawText "0",365,bline_y
DrawText "0",395,bline_y
DrawText "0",425,bline_y
DrawText "0",455,bline_y
DrawText "0",485,bline_y
DrawText "0",515,bline_y
DrawText "0",545,bline_y
DrawText "0",575,bline_y
DrawText "0",605,bline_y
DrawText "0",635,bline_y
DrawText "0",665,bline_y
DrawText "0",695,bline_y
DrawText "0",725,bline_y
DrawText "0",755,bline_y
bline_y = 50
DrawText "0",35,bline_y
DrawText "0",65,bline_y
DrawText "0",95,bline_y
DrawText "0",125,bline_y
DrawText "0",155,bline_y
DrawText "0",185,bline_y
DrawText "0",215,bline_y
DrawText "0",245,bline_y
DrawText "0",275,bline_y
DrawText "0",305,bline_y
DrawText "0",335,bline_y
DrawText "0",365,bline_y
DrawText "0",395,bline_y
DrawText "0",425,bline_y
DrawText "0",455,bline_y
DrawText "0",485,bline_y
DrawText "0",515,bline_y
DrawText "0",545,bline_y
DrawText "0",575,bline_y
DrawText "0",605,bline_y
DrawText "0",635,bline_y
DrawText "0",665,bline_y
DrawText "0",695,bline_y
DrawText "0",725,bline_y
DrawText "0",755,bline_y
bline_y = 80
DrawText "0",35,bline_y
DrawText "0",65,bline_y
DrawText "0",95,bline_y
DrawText "0",125,bline_y
DrawText "0",155,bline_y
DrawText "0",185,bline_y
DrawText "0",215,bline_y
DrawText "0",245,bline_y
DrawText "0",275,bline_y
DrawText "0",305,bline_y
DrawText "0",335,bline_y
DrawText "0",365,bline_y
DrawText "0",395,bline_y
DrawText "0",425,bline_y
DrawText "0",455,bline_y
DrawText "0",485,bline_y
DrawText "0",515,bline_y
DrawText "0",545,bline_y
DrawText "0",575,bline_y
DrawText "0",605,bline_y
DrawText "0",635,bline_y
DrawText "0",665,bline_y
DrawText "0",695,bline_y
DrawText "0",725,bline_y
DrawText "0",755,bline_y
bline_y = 110
DrawText "0",35,bline_y
DrawText "0",65,bline_y
DrawText "0",95,bline_y
DrawText "0",125,bline_y
DrawText "0",155,bline_y
DrawText "0",185,bline_y
DrawText "0",215,bline_y
DrawText "0",245,bline_y
DrawText "0",275,bline_y
DrawText "0",305,bline_y
DrawText "0",335,bline_y
DrawText "0",365,bline_y
DrawText "0",395,bline_y
DrawText "0",425,bline_y
DrawText "0",455,bline_y
DrawText "0",485,bline_y
DrawText "0",515,bline_y
DrawText "0",545,bline_y
DrawText "0",575,bline_y
DrawText "0",605,bline_y
DrawText "0",635,bline_y
DrawText "0",665,bline_y
DrawText "0",695,bline_y
DrawText "0",725,bline_y
DrawText "0",755,bline_y
bline_y = 140
DrawText "0",35,bline_y
DrawText "0",65,bline_y
DrawText "0",95,bline_y
DrawText "0",125,bline_y
DrawText "0",155,bline_y
DrawText "0",185,bline_y
DrawText "0",215,bline_y
DrawText "0",245,bline_y
DrawText "0",275,bline_y
DrawText "0",305,bline_y
DrawText "0",335,bline_y
DrawText "0",365,bline_y
DrawText "0",395,bline_y
DrawText "0",425,bline_y
DrawText "0",455,bline_y
DrawText "0",485,bline_y
DrawText "0",515,bline_y
DrawText "0",545,bline_y
DrawText "0",575,bline_y
DrawText "0",605,bline_y
DrawText "0",635,bline_y
DrawText "0",665,bline_y
DrawText "0",695,bline_y
DrawText "0",725,bline_y
DrawText "0",755,bline_y
bline_y = 170
DrawText "0",35,bline_y
DrawText "0",65,bline_y
DrawText "0",95,bline_y
DrawText "0",125,bline_y
DrawText "0",155,bline_y
DrawText "0",185,bline_y
DrawText "0",215,bline_y
DrawText "0",245,bline_y
DrawText "0",275,bline_y
DrawText "0",305,bline_y
DrawText "0",335,bline_y
DrawText "0",365,bline_y
DrawText "0",395,bline_y
DrawText "0",425,bline_y
DrawText "0",455,bline_y
DrawText "0",485,bline_y
DrawText "0",515,bline_y
DrawText "0",545,bline_y
DrawText "0",575,bline_y
DrawText "0",605,bline_y
DrawText "0",635,bline_y
DrawText "0",665,bline_y
DrawText "0",695,bline_y
DrawText "0",725,bline_y
DrawText "0",755,bline_y
Flip
Next
Print "inline = " + (MilliSecs() - start)
start = MilliSecs()
For Local c = 1 To 100
Cls
Drawzeros(0)
Next
Print "function loops = " + (MilliSecs() - start)
End
Function DrawZeros(offset)
For Local bline_y = 20 + offset To 170 + offset Step 30
For Local x = 35 To 755 Step 30
DrawText "0", x, bline_y
Next
Next
Flip
End Function
There's nothing really
wrong with doing all of your DrawTexts as big blocks of unrolled code, so use that approach if it's significantly faster for you, but it seems odd that there's a noticable delay with the startup and shutdown when using the looping function. Could you post both versions here (if they don't use images/sounds that would be difficult to post)? Now I'm curious what's going on. :)