Haven't ran into too many issues myself performance wise. Typically shader performance is "gated" by how often you are calling shader_set and shader_reset more than just about anything else. Vertex batch count isn't usually a good measure of how "performant" anything is. I've had something running at 60fps with my batch count in the thousands.
Other issues can be your application surface size. Your art may be low res, but if you've upscaled your app surface size to get sub pixels, you are doing more work. You could be swapping 4 to 16 times the number of pixels than you really need to. Other concerns are palette sizes. If your palette has tons of colors, then that's more colors the shader needs to search through to find a match (or it ends up going through all of them when there is nothing to match)
There are lots of ways to improve performance, but it's all going to be very, very specific to your project. I'd recommend asking on the GM Discord server when you have time to sit down and work on it. Lots of people there that can help you figure out exactly what is slowing you down and how to improve it. Best case scenario would be you working on said "lower end" machine, or setting up a use case where you are experiencing the performance issues yourself.