What kind of issues are you getting on the second machine?
You mention needing to add a sleep time to your script for the second machine. That is indicative of timing issues... Either the second machine is slower or configured differently to cause your AUT to run slower...
Rather than adding hard coded sleep timers you should add verification code to verify the AUT is ready or an element exists before continuing with a step. With proper verifications set up you can move your test code to any speed of machine and the automation will wait accordingly for your AUT to be ready before executing a step.
Is there any alternative for FindSingle(looks FindSingle is very slow).?
It is only slow depending on the complexity of your AUT and where you root your find from. In other words, if you are trying to find a cell in a grid with thousands of items and that grid is buried within many frames and your find is rooted at the top of your AUT, the find will indeed take much time since it has to traverse your AUT. If however, you root your find at the grid element itself, your find will take less time. This is just an example, but the methodology is sound for all different types of element you wish to find within your AUT.
If this or any response has helped you, please reply to the thread stating that it worked so other people with a similar issue will know how you fixed your issue!
Ciege...