How do software developers manage to know if their software will run on the target hardware they are developing to? Many developers today work on machines much faster than the intended platform. What kind of tools do they use to understand when they are going overboard?I'm asking from the perspective where you for example develop algorithms on a modern x86 in a GNU/Linux environment but the intended platform is an much slower Arm, still in GNU/Linux.
How does a software developer know if the target hardware is fast enough to run the software?
testing;benchmarking
Ideally in my world there would be a tool to benchmark the platforms and then a tool for running the program to get some figures so you could compare and understand which platform you'll be using later on.There is no such tool.There is not even a methodology to follow.The best you can do is extrapolate from the measured performance of the application running on a different platform.  Even that is liable to be unreliable.Basically, the performance of an application is going to depend on a large number of complicated platform parameters, and (in some cases) on complicated interactions between the platform and the applications fine-grained behaviour.  It is too complicated to model.(Depending on the nature of your application, the parameters could include CPU clock speed, CPU chipset, number of cores, memory size, memory architecture, memory speed, I/O system bandwidth, network interface, graphics card, hard drive controller and device, etcetera, etcetera.  Hundreds of different hardware and software characteristics could be relevant ...)The best practical advice would be to just try it.  If you can't afford to buy an example of each candidate platform, then see if the salesman will let you try out the application on their kit before you sign the contract to buy.  If you can't do that, then toss a coin ...