Abnormally low performance on iOS simulator

Hello there.

I’m starting this thread because I couldn’t find a solution to my problem after hours of searching online and trying different things on my own.

Just before describing the issue, a bit of context.
I’m a QA engineer with medium dev skills. I have some experience in node js and c#.
The company I’m working for has several apps, with different builds for different countries. All apps are available on iOS and Android.
Before I joined there was no real QA. Project managers were simply checking stuff based upon a personal checklist written nowhere but their head.

While I’m working with project managers to train them in manual testing, I’ve also started an automation project to cover the redundant work. I’m completely new to appium and discovered it recently at a QA meetup. For the moment I’m focusing on our main (most profitable) app, on our primary market (France).

The setup
Appium 1.4.13 (1.4.15 since this morning) installed globally with npm
XCode 7.1.1
iOS simulator, iPhone6 iOS8.1 (couldn’t try on a real device yet)
Macbook pro mid 2012, core i7 2.9Ghz, 8GB of Ram
On webdriver side I’m using nodejs library

Issue 1
It takes more than a minute for driver.init() to complete.
No matter what test I’m running, when I start a new session the app opens up within less than 5s, but then nothing happens for 60s or more until driver.init is done.
During all this time, on appium side there is the following log “Instruments is ready to receive commands”

After enabling debug logs, it seems that most of this waiting time is spent here:
Debug: evaluating au.mainApp().getTreeForXML()
Which is followed by the xml being sent (about 150kb)

Issue 2
The execution time is greatly impacted when I use XPath rather than AccessibilityID to clic elements.
This results in a simple scripts that does 3 consecutive clic actions take more than 2.5 minutes to execute versus 1.5min when using accessibility ID (including the 1min from problem 1).
This problem is also visible when using the appium GUI to inspect my app. It’s incredibly slow and sometimes it just fails scanning the app UI architecture. I’m not really able to use the record & replay features except for single clics.

Unfortunately there are currently no accessibility IDs in the app, except for the 3 I asked to do my tests. The lead devs would like to avoid implementing accessibility ids as this represents a significant work load.
And I can’t really use names as they change depending on the app language and content we get from the server (movie “A” today can be movie “Z” tomorrow).
Not sure if there are other good options.

Works fine with automator
I’ve tried the same 3 actions using the native iOS tool and it runs really fast.

iOS only
I’ve tried on Android and it runs indeed super fast.
The xml for Android is only 30-40kb.

Willing to help
As I said, I’m new to appium and have medium dev skills, but I really am willing to sort this out.
I tried to present a global picture of the problem but probably didn’t include enough technical details.
Please let me know what’s missing and I’ll provide it.