I wasn't after an exact science-based response, hence my "I appreciate this can be a subjective question" and "Seems alright doesn't it...?" lines. I think I've supplied enough information for someone to say "yes that seems fair" or "no, I can get 500 times more than that on my similar machine. I've implied that I'm just rendering 100 simple trees, I didn't want to bore everyone or waste anyone's time with reams of shader code or other info to scan through.
The problem is that you can get MAJOR differences.
Rendering 30M triangles with 7M vertices is far different than rendering 30M triangles with 90M vertices (very high triangle reuse vs 3 vertices per triangle). We're talking about 1280% increase in the amount of data needed to be processed by the vertex shader.
It's not the same to send the world view projection matrix as a single matrix than to send each matrix separately and concatenate them in the shader. Also it's not the same to send the world, view & projection matrices per tree, than sending view & projection matrix per camera, and the world matrix per tree.
Having many triangles that occupy less than a pixel can cause you up to 4x slowdown.
I'm not talking about pasting huge loads of shader code (you're right in that no one's gonna read that), but at least tell us a rough idea of the complexity. Outputting a fixed colour is the most simple pixel shader, then there's a diffuse texture with a simple Blinn-Phong BRDF... and then there's a shader that can do normal mapping, specular mapping, and uses a GGX with Fresnel BRDF to lit it.
And last but not least, instancing at 100 instances is going to barely make a difference. If you have noticeable performance differences with an older implementation that didn't use instancing, then you're (or were) doing it wrong.
Instancing will fix your CPU bottlenecks, which often begin to take a toll once you exceed the 1000 drawcalls (depends on API; e.g. in DX11 you can make 50k drawcalls like nothing if you're careful enough; you're tagging this thread as D3D9 so I assume you're using D3D9, and that API often begins to show its problems between 1k - 3k draws)