Your question is a bit harsh, because it's kind of vague. I will give you a few points, maybe it will help.
What's the same?
The intuitions behind both bilateral filtering and anisotropic diffusion are the same:
- averaging is good to remove random noise;
- averaging should only concern pixels that belong to the same region (in the sense that they are pixels of a given color of a given object):
- to avoid artifacts at the borders between regions (most notably, blur)
- to improve the denoising efficiency (without outliers inside, averaging is more efficient).
Bilateral filtering and anisotropic diffusion will differ by how they achieve these two goals (under the constraint that an image segmentation is not available).
Usually, anisotropic diffusion is expressed in a variational framework, where some image functional is minimized. These functionals usually include a term that depends on the gradient of the image to be denoised, because this term allows to trigger the anisotropy property. The solutions to these problems are usually obtained iteratively via some gradient descent, but not always (in image morphology inspired frameworks such as mean curvature motion for example, image level lines are moved according to their curvature).
Basically, the solutions to these functionals correspond with isotropic diffusion inside homogeneous areas, and diffusion across image edges is stopped by a weight depending on the image gradient.
Bilateral filtering is a pixel-based approach. For a given pixel, its denoised counterpart is obtained by the weighted average of its neighbours, where the weights are given by some function that depends on their color similarity and image distance.
Unlike anisotropic diffusion then, the problem is not solved globally over the image but over each a neighbourhood surrounding each pixel.
Furthermore, there is no explicit gradient-based barrier at a given pixel: this effect will be more or less pronounced by the value of the decay put in the visual distance function.
Note that when the bilateral neighborhood of a pixel goes infinite, you have a new algorithm called nonlocal means.
And now.. the speed
In terms of quality, I would consider that either approach is good. Anisotropic diffusion has some caveat though:
- since it's usually implemented as some gradient descent or PDE solver, a quick-and-dirty implementation can run into numerical issues;
- in my opinion, it's easier to tune the decay of the distance function in bilateral filtering than the data term in anisotropic diffusion functionals.
Remains the speed... This part depends a lot on the practical implementation.
When bilateral neighborhood size gets large (OpenCV claims large is above 5 pixels) then bilateral filtering is slow.
You can use some tricks (Gaussian approximated by boxes, pre-selection criterion...) to accelerate the code. In fact, there's even a significant part of the literature on bilateral filtering that is dedicated to speeding it up.
For anisotropic diffusion, it depends in the numerical scheme implemented to solve the problem. Some are better (faster and more stable) than others: typically, TV regularized constraint is nowadays implemented with Chambolle's projectors (fast) or with Nesterov's acceleration (see FISTA -- faster).
Furthermore, these schemes are well suited to massively parallel implementations (GPGPU, data parallel multithreading) that reduce greatly the computation time.