Efficient Algorithm for bilinear pairing on ECC

Bilinear Pairing in the elliptic curves is a wonderful mathematical mapping which is usually defined by the map $$e:G_{1} \times G_{1} \rightarrow G_2$$ for some groups of $$G_{1}$$ and $$G_{2}$$. For better understanding of pairing and its properties see the wikipedia.

Question1: Are there any efficient bilinear pairing or efficient pairing algorithms? If so, is this algorithm applicable to all kind of pairings, I mean is it a general approach for efficiently computing any pairing or just an algorithm specific pairing? Meanwhile, I am familiar with Weil and Tate pairing, but efficiency of implementation and performance is my concern.

Question2: Is there any article in which the efficient computability of pairing-based approaches are discussed? Or may be an article in which a comparison between pairing based approaches and discrete logarithm based approaches is discussed.

I have read some pairing-based approaches for group key exchange in which there is no clue on how efficient they are and also there is no comparison of this kind with their previous algorithms. So I doubted may be there is a nice article on this which has paved the way.