that's true davioware, it was your discovery. you'll notice I didn't say "I" found. in that case when a sentence begins with "found", the "davioware" is assumed. as far as what the bug was - remember, my fix was on the remade function object, so it may not be the same, but the framerates were so similar, I think it probably was.
in my test version at first I had the plugin assuming all params were strings, thinking checking the type was an unnecessary step that would slow things down since construct can use them all interchangeabl. I suppose the way the runtime interprets strings is slower than floats and ints, specifically when it's converting back and forth between strings and floats, and back again, which makes sense.
I just changed it so it checks the type of each value before returning the value in the param expression. that made all the difference. 4.5x the speed