What is the difference between derivative free optimization and derivative optimization in terms of advantages/disadvantages? I understand the basic operation of the algorithms however i'm unclear as to when to use one over the other and what advantages/disadvantages they offer over each other. 

Also as an aside, if anyone knows any good resources that go over the topic of optimization in detail (especially gradient free optimization) that I could read or watch, i'd really appreciate it if you could point me in the right direction. 

Thanks in advance guys and apologies if its a basic question, I'm quite new to the topic.
Actually, derivative methods such as random search shorten the time allocated for function evaluation if the problem is big. On the other hand, derivative-free methods take much time to complete function evaluation that leads to a dramatic increase in optimization time.