Difference between @FindBy vs driver.findElement()?

Hi All,

Can somebody please explain the difference between @FindBy vs driver.findElement()?
Currently we are using pageFactory framework in desktop and using @FindBy annotation to initialize web elements on page. These elements works fine and selenium is able to identify elements initiated with in 2-3 seconds, but on using same approach for native iOS automation taking around 30-50 secs to identify an element. (where as using driver.findelement() approach identifies element in 5-6 secs).

did anybody see this issue in past or able to get resolution for the same?
Any help in this matter would be really appreciated.

I am using appium 1.5.3 version. (observed same issue with 1.4.3 also)

Thanks,
Rohit Gupta